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

`get/setAttribute` is just one example. I think we decided to use the get prefix, it is probably a good idea to change it everywhere:

```
dom.setValue(input, "10");
dom.getValue(input);
```

instead of 

```
dom.setValue(input, "10");
dom.value(input);
```

I personally don't have a preference. So if you think the `get*` naming scheme is more Dartish, or easier to read, I can change it.