Bumps version to 0.31a1.
recorder.py: Uses constant for software string.
recorder.py: Uses param object for WARCRecorder.
Includes PhantomJS version in warcinfo.
app.py: Removes Mozilla from User-agent.

Closes chfoo/wpull#101
Adds "crawler" to description.

[ci skip]
iostream.py: Rewords StreamClosedError message.
Implements --base,--force-html

Closes chfoo/wpull#40.
iostream.py: Fixes typo. conf.py: Mocks out lxml.etree.

[ci skip]
Limits cookie length and max number per domain.

Closes chfoo/wpull#102.
cookie_test.py: Fixes imports, FakeResponse for Py 2.
app.py: Adds URL filters only when enabled.
testing/badapp.py: Adds inline links to many_links.
document,scraper.py: WIP Uses target parser iterative document readers.

re: chfoo/wpull#105, chfoo/wpull#104
[ci skip]
document.py: Removes incorrect fixme comment.

It's deflate that does not have the magic bytes.
[ci skip]
converter.py: Rewrites converters using new iterative readers.
document.py: HTMLParserTarget emits end tags as well.
converter.py: Uses temp filename. Fixes writing end tags.
document.py: Uses StreamReader instead.

TextIOWrapper closes our file and doesn't support SpooledTemporaryFile.
scraper.py: Resets file offset after read. Swaps in CSS iterative read.