CLJS-499: Reassess ObjMap vs. PersistentArrayMap

Deprecate ObjMap.

ObjMap was introduced as optimization to leverage the performance
benefits around JS Objects for access. However in order to avoid
issues around possible prototype modification of Object as well as the
performance hit of hasOwnProperty, ObjMap relied on an internal array
for determining the presence of a key - every lookup call involves a
scan, just like PersistentArrayMap.

Because of the extra array, modifying an ObjMap required considerably
more work.

PersistentArrayMap has been tuned following the enhancements made to
Clojure's PersistentArrayMap. PersistentArrayMap on V8 has as good as
or faster lookup times than ObjMap, and modification times are up to
>9X faster according to our benchmark suite. JavaScriptCore also shows
performance benefits though they are not as dramatic. On Firefox the
performance is degraded but in general Firefox lags considerably on
all ClojureScript benchmarks.

As it turns out most users were likely already using PersistentArrayMap by
default as there was a compiler emission bug, only empty maps compiled
to ObjMap.

Fixed bug in TransientHashMap logic, we use
cljs.core.PersistentHashMap/EMPTY rather than the empty map literal.