Feature/object caches

Turtles all the way down.

- Set and Map equality is identity (we always had this for sets)
- All objects built on top of either sets or maps are cached on one of these immutable objects
- Add documentation on caching strategies
- Add utilities to debug cache leaks (show cache size at exit)