Remove non-recursive module builder methods
Explicitely add json to the bundle to appease multi_json

Yes, it's insane that this is needed.
Avoid Ambiguous First Argument warning
Explicitely depend on a version of FFI that works with Rubinius
Remove basically useless Builder::Type::StructBased class
Extract UnintrospectableTypeInfo class

This class will help build unintrospectable classes, so their builder
will be more like the builders for introspectable types.
Implement and use UnintrospectableTypeInfo#g_type
Implement and use UnintrospectableTypeInfo#fields
Implement and use UnintrospectableTypeInfo#parent
Unbreak LSP for Unintrospectable builder

Builder::Type::Unintrospectable#initialize now takes an info instead of a gtype,
matching the behavior of its superclass. This means Builder creates an
UnintrospectableTypeInfo object, which is processed like any other info
object to create the corresponding class.
Clean up requires
Create new info classes for user defined types
Unbreak LSP when building user defined types

Use new UserDefinedTypeInfo class to wrap class and property
informations, and pass that to the user defined type builder.
Remove Builder::Type::UserDefined#install_property

This method is no longer used. Its function is taken over by
UserDefinedTypeInfo#install_property.
Remove unused UserDefined::IBaseInfo and descendants
Add descriptive comments to new classes