Base HashSet implementation on HashMap

Replaces `HashSet` internal implementation to use `HashMap` as storage.

This allows to factorize storage logic and fixes `HashSet` version of issue #211 (which has been fixed in #211 for `HashMap` only)