This makes some common types like JS::Object smaller (by 8 bytes) and yields a minor speed improvement on many benchmarks.
With this change we maintain a data structure that maps ids to corresponding elements. This allows us to avoid tree traversal in getElementById() in all cases except ones when lookup happens for unconnected elements.