Splitting HTMLDocument from Document, and other code clean ups.

* Added ```WithBrowser``` trait, which you can mixin to test cases or other classes which needs DOM manipulation.
* Separate ```Document``` and ```HTMLDocument``` classes, and change return types of some methods in ```Document``` for compatibility.
* Rearrange and regroup attributes for legibility.

Previously, constructing a SVG document using ```DOMParser``` would result in a ```Document``` instance which has lot of non-working methods, as they're intended only for HTML. Both W3C DOM API and MDN reference document also distinguish those to types of interface, so I splitted them into separate classes.

And invoking ```getElementById()``` and casting the result into ```SVGElement``` was problematic, since the return type ```HTMLElement``` is not a parent type of the former.

I tried to group those attributes which roughly have related meaning. And I also added _@deprecated_ annotation to some of the attributes of which MDN document clearly indicates as deprecated.

Still, there are lot of methods and attributes in ```HTMLDocument``` which are either outdated or IE specific, so we might need to extract them later into something like ```IEDocumentExtension```.