Renamed Set to HashSet
Placed strict set compatibility requirements on set operations.
Removed some unnecessary calls to hash function.
Fixed bugs from not rehashing transforms elements in HashSet::map[InPlace], improved testing, added addMany/removeMany.
Added missing typechecks to HashSet
Implemented Set (fixes #38), moved AssociativeKeyGenerator into Utility namespace.
Moved common set tests into shared test case.
Merge branch 'feature/set' into develop