Begin to implement PersistentHashSet. Introduces IPersistentSet.

The functions `project`, `rename-keys`, `rename`, `index`, `map-invert`, & `join` all deals with meta or sets of maps, and are not yet in the set namespace. I plan on doing them next, however I did a few refactors and didn't want to drift from master.