Node/Element

I'm sorry to say that [my initial introduction of the standard DOM Level 1 data structure](https://github.com/fb55/domhandler/commit/3a70221fdb29ca12b6320a7bcac3d3afa42bb923) was a little sloppy. Specifically, it conflated the `Node` and `Element` API so that (despite being refered to as `Node`s in the source code), every Node-like object received Element behavior.

This patch formalizes the distinction and ensures that only true Elements ("tags" in DomHandler parlance) receive behavior specific to Elements. At the moment, this distinction is limited to the `tagName` attribute, but I have an interest in extending the `Element` object in ways that wouldn't make sense for all Nodes.

@fb55 What do you think?