Update serialization to use parse5

This should enable us to remove a lot of the cruft we currently have to
care about when serializing and move the workload to someone else.
Fix parameter handling of createDocumentType

All parameters are actually .toString()'d in the browser. To remove the
value from the doctype one has to provide an empty string.
Fix up some invalid parameters in tests

Doctype behaviour tests were tested in Chrome console.
Remove all of the old serialization cruft
Fix test results to align with browsers

Tested with Chrome and Firefox. IE encodes the quotes differently.
Update parse5 dependency to require v1.0.1
Remove custom HTML encoding

Since we rely on parse5 for everything now it's not needed
anymore. It also apparently never really worked correctly anyways.
Move process exit out of runner-display

To allow runner-display to be reused by browser-runner, it will need to call
back with success or failure instead of exiting the process itself.
Export optimist from runner-options instead of argv

The browser runner accepts additional options, so it's convenient to export
`optimist` instead of `optimist.argv`.
Allow empty strings for HTML
Fix for a memory leak in dispatchEvent()

The array in question grows with duplicate entries everytime
dispatchEvent() is called when mixing onfoo="" with
addEventListener("foo", ...)
Event phase AT_TARGET should also fire capture listeners

Fixes #855
The event phase AT_TARGET should also fire events registered with
capture=true on the event target, not just capture=false. Note that
calling stopPropagation during AT_TARGET should not prevent any listeners
registered on that same event target from being called.
eventPhase and currentTarget should be reset after dispatch

As per spec, before and after an event has been dispatched,
Event.eventPhase should be set to NONE and Event.currentTarget should be
set to null.
Avoid error document.cookie = null
Test that doc.cookie = null returns null and has no effect
Add a setter for NodeList.length

Apparently, Firefox's `Array.prototype.splice` sets `length`. This fails without
a setter, so add one that just returns the current value of `this._length`.
Make jsdom browserifiable and add browser test runner

To run the tests: `node test/browser-runner.js`. The runner accepts the same
options as `test/runner`, as well as some optional arguments that control the
test setup.
Updates to CONTRIBUTING and README for v1

Fixes #830.
Stop testing Node 0.8.x.

It's like a decade old by now.
Document async script loading tricks.

Fixes #675.