The purpose of a CoinManager is to allow access to all
properties of a Coin on-chain from within a single shared object
This includes access to the total supply and metadata
In addition a optional maximum supply can be set and a custom
additional Metadata field can be added.
Holds all related objects to a Coin in a convenient shared function.