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?