Adding a short printable name via toString().
Removing unused imports.
Evolved interface for inferMapType.
Creating hash functions for maps/lists/sets.
Making constructor protected so that other this class might be extended within the package.
Evolved interface for infer type functions.
Added isEqual functions.

Further: hard spaces -> tabs.