Fix equality checks

Started working on #4, but realized `Map#eql?` doesn't quite work. This implements deep equality between maps.

/cc @maccman