Instead of using two uthash entires, it uses two unordered_map entries.
Benefits are:
easier to debug. I can inspect the contents of the unorderd_map with the
debugger
less memory. I don't need to allocate two proxies. I only allocate one
proxy and I added it into both maps
If also fixes an important bug when unrooting objects. Unroot was
cleaning the heap object. So now proxy adds a _jsobj, which is a raw
pointer. Needed under certain cases.