Test handling of < and > in <pre> tag

Fixes #755.
Test if querySelector succeeds on incomplete docs

Fixes #523.
Test if steam page with < breaks parser

Fixes #800.
Trust the returned tagnames of the parser
Make test shim replacer more error resistant
Move non-standard serialization methods out of document

See #141.

We still have to leave in the .innerHTML setter for now since it's
basically used everywhere in the code base for parsing the document.
Fix failing tests to use new serialization method
Break apart test options, runner and display

For #711, the test runner will execute in a web worker, but test results will be
displayed in the parent page or a shell. So, it is convenient to break the
options parsing, test running, and results display into their own modules for
reuse by other runners.
Remove { omitDoctype: true } since it didn't actually work.
Document how to serialize a document.
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