Adding new factory methods.
Fixing major equality error in map/set where cached hash was not returned properly.
Further, reworking specialised map implementations to use ImmutableMap interface.