Support modded enums in gson using custom EnumTypeAdapter

This adds support to gson for enums that have been modified through plugins such as [Carbon](https://github.com/NavidK0/Carbon).

Carbon adds new materials and entities to the Material and EntityType enums which causes the built-in EnumTypeAdapter to throw an AssertionError while initializing the type adapter for either of those enums.

Thanks to @Shevchik for [pointing me in the right direction](https://github.com/MassiveCraft/MassiveCore/commit/ee2c51f60a95d4f37e8c561165083962e0b2e127).