[runtime] Add class kind test functions to cleanup things a bit.
[runtime] Introduce specialized structs for each MonoClass kind.
[runtime] Push MonoClass::generic_class to MonoClassGenericInst.

This required introducing the accessors all over the place, so this is why the patch is huge.