[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.

Not sure about this one. Most libraries I remember from my java/ruby days used getAttribute/setAttribute.