Implement DOM Level 1 `Node` API

@fb55 This is a first-pass of the feature we've been discussing in https://github.com/MatthewMueller/cheerio/pull/308 .

One thing that I'm not sure about is the new static method `DomHandler.makeNode`. It feels like it's outside the scope of DomHandler, but [Cheerio needs some way to instantiate a Node](https://github.com/MatthewMueller/cheerio/blob/09e0c0706c53f61ea55e0f97ec616ece0992f567/lib/parse.js#L12-L29), and I'd rather not repeat this patch in Cheerio. Maybe you have some ideas about how Cheerio could be modified to avoid this problem altogether?