ArrayMap node for Map

An optimization employed by Clojure, when a Map is very small (<= 8 entries), it is cheaper (memory and time) to treat it as a flat list of entries instead of a HAMT. ArrayMap does not use hashing, and so hash() is never called for update/get on these small maps. When a Map grows beyond the capacity of ArrayMap, it is automatically converted into a HAMT. HAMT is never converted back to ArrayMap, for simplicity.