[App Layer] Token Factory
This adds an x/denom module, which allows app-layer smart contracts to create custom x/bank tokens. These will be used for token generation on the launchpad, tokenising LP units, accounting for lending deposits etc.
The Msg types are be blocked by default by x/thorchain AnteHandler, and should only be accessible via cosmwasm bindings, in order for token generation to inherit the same control as smart contract deployment.
Tokens are prefixed with x/, which is designed to be short enough to fail chain.go validation to prevent collisions with L1 chains and synth assets.
Open question: we ideally need to be able to support LP deposits of these native tokens, so that eg tokens minted on the app layer (as $RUJI will be) can be deposited into base layer pools to tap into existing integrations. The x/ schema currently isn't compatible with this, should we be looking for a schema that works with asset.go, or modifying asset.go's parsing so that it can move eg THOR.X/CUSTOM as Chain=Thor, Ticker=CUSTOM, Symbol=X/CUSTOM, Native() = x/custom