Automatically detect property/attribute for HTMLDOMPropertyConfig

Proper implementation of #1512

It does not get rid of `MUST_USE_PROPERTY` (see #2140) and `MUST_USE_ATTRIBUTE` because I'm not 100% sure if we might want to use it or not, I assume there's no need for it.

I also removed a test that I'm not sure what to do about. It relied on really hacky behavior and I don't really see a simple way of keeping it alive (not really familiar with testing), but please shout if you think otherwise.

This is beneficial for a lot of reasons, one being that we ensure DOM attributes always reflect the intended value. `MUST_USE_PROPERTY` was previously used for some attributes not supported by all browsers, which when updated would just add a custom property to the node object rather than the intended attribute.

Half-related: #1848 and #1657
Updates are going to get slow until this cache is populated, which I think might be a showstopper. One thing we can do is hold onto our `testElement` for each node type so we aren't recreating each time we call the function. That's still going to be slower than what we have now though. The tradeoff is a bit more correctness and not having to special case things (as much).