Requiredness should be after field id.
Updated reflection codec to properly handle builders that use method
injection instead of constructor injection.
Added key and value type comparisons to equals() and hashCode() for
container types to fix scenarios in which parameterized type erasures
could occur.
Added support for using interfaces as structs.