Refactor serialization

See #141.

I had a little time to start this off right now:
I'm pretty sure I missed something, I just want to get discussion on the code side of this going so we can get this in with 1.0.

We still need to remove the innerHTML setter on ```Document``` but I haven't looked too much into how to achieve that. Probably just move the code of it into ```jsdom.jsdom```? Might affect other stuff and be more to do though.

Any issues with naming, location, tests, functionality?
Boolean arguments in general are kind of bad. I would prefer an options bag. Also I think it should be omitDoctype, default false. So

```js
serializeDocument(doc) // includes doctype
serializeDocument(doc, { omitDoctype: true })
```