createHat does not detect MAX_LEVEL admin correctly
In `createHat()`, the contract checks user is not minting hats for the lowest hat tier:\\n```\\n        function createHat( uint256 _admin, string memory _details, uint32 _maxSupply, address _eligibility,\\n            address _toggle, bool _mutable,  string memory _imageURI)       \\n                 public returns (uint256 newHatId) {\\n        if (uint8(_admin) > 0) {\\n                    revert MaxLevelsReached();\\n                 }\\n             ….\\n        }\\n```\\n\\nThe issue is that it does not check for max level correctly, as it looks only at the lowest 8 bits. Each level is composed of 16 bits, so ID xx00 would pass this check. Fortunately, although the check is passed, the function will revert later. The call to `getNextId(_admin)` will return 0 for max-level admin, and _checkAdmin(0) is guaranteed to fail. However, the check should still be fixed as it is not exploitable only by chance.
Change the conversion to uint16.
```\\n        function createHat( uint256 _admin, string memory _details, uint32 _maxSupply, address _eligibility,\\n            address _toggle, bool _mutable,  string memory _imageURI)       \\n                 public returns (uint256 newHatId) {\\n        if (uint8(_admin) > 0) {\\n                    revert MaxLevelsReached();\\n                 }\\n             ….\\n        }\\n```\\n