CW20 Stakeable

This is an extension of cw20 that allows the token to be staked. Staked tokens can be unbonded with a configurable unbonding period. Staked balances can be queried at any arbitrary height by external contracts. This contract will be used to enable DAO voting.