[WIP] refactor(dom): hide all dom access behind a facade

This PR hides DOM-access operations behind a facade. Having this facade enables better instrumentation. For instance, we can add WTF trace calls, so in the profiler you can see all the DOM operations, how long they took, etc. 

It is a WIP PR, so I'd like to get some feedback.

Let's use `getAttribute`/`setAttiribute` Accessing `element.attributes` is expensive because it has to create the Map even if we don't need it.