Start implementing generic inference
More work on implementing generics
Add zip, map, and reduce macros.
Move map macro from List to Collection.
Fix rescue and zip codegen
Implement erasure
Remove class_id and internal_name methods from JVMType
Remove a bunch of isX methods from JVMType.
Move subtype logic from MethodLookup into the Type classes.
Implement subtyping rules for parameterized types.
Fix supertypes of generic arrays.
Type refactoring

 - add 'erasure' method to MirrorType
 - TypeInvocation extends BaseType instead of MirrorProxy
 - TypeVariable and IntersectionType implement MirrorType
 - Delete org.mirah.jvm.model.ArrayType
 - Cycle is a MirrorProxy
 - Types is implemented using MirrorType methods
Implement lub()
Clean up Wildcard creation.
Loop detection and protection in BaseTypeFuture and AssignableTypeFuture

Fixes #224
Use a Context for type system initialization.
Generic type loading
Make class literals generic
Basic generic method lookup
Fix some test breakage.