Replace custom access roles / ownable with OpenZeppelin AccessControls
Add whitelist with access controls
Minting will only be on Matic chain
FxStateSync implementation keeps L1 tokenCount and baseUri in sync
POS Bridge implementation to allow tokens to move between L2 and L1
pack/unpack of token count and baseUri to/from bytes for state transfer
Removal of LifecycleManager. It was a dumb contract.
Storage of baseURI as bytes to reduce gas costs on state syncs. tokenURI reads are currently "free" so move calculations to the reads of converting bytes to base58 string
Adds contract verification support
Some tests updated.
[x] Deployer needs more work.
[x] Backend needs to be updated.
[x] Frontend updated
TODO: Add bridging, cross-chain view to frontend
Some tests updated.