Adding support for hashmaps

Changes:
- Added code to support maps
- Added support for map literals using '{', '}'
- Added 'hash-map' function for constructing maps
- Added 'map?' function for checking if something is a map
- Cons and ConsValue now conform to the Hashable protocol
- Updated 'apply', seq', 'concat', 'cons', 'first', and 'rest' to work with maps
- Fixed a bug where 'seq' didn't return the right value when called with a vector
- Fixed a bug where calling a macro with the wrong number of arguments triggered an internal error, rather than returning a failure
- Changed some older nomenclature for consistency