Updated Hierarchy to Java 5

Problem: Client code should not have to guess what is contained in the List
returned by the Hierarchy.

Changes:
 * Added generics to the return types of List that were missing.
Updated MultiMap and HashMultiMap to Java 5

Problem: Clients should not have to guess what objects a MultiMap will return.

Changes:
 * Added generic types to MultiMap and HashMultiMap
 * Clarified return types and parameter types
Made FastHierarchy.getAllSubinterfaces public

Problem: Clients may need to know what are the subinterfaces of an interface

Changes:
* Updated MultiMap to use generics
* Made getAllSubinterfaces public
* Added a non-interface check in getAllSubInterfaces
* Transformed some loops to for-each loops
Merge pull request #117 from malaverdiere/develop

Misc Updates to Hierarchies