Maps!

This makes [perfidy](https://github.com/jml/perfidy) a dependency, and uses it for immutable maps.

I'll add a test that shows maps can be keys of maps.