engine.py: Releases semaphore and return if stopping on poll.
engine,util: Add and use AdjustableSemaphore.

Re: chfoo/wpull#93
setup.py: Moves setup args into a dict.
Bumps version to 0.30a1

[ci skip]
iostream.py: Catches AttributeError on do_handshake().

Re: chfoo/wpull#98
cache.py: Adds FIFOCache.
network,url.py: Switches to FIFOCache.
Adds collections module containing LinkedList.
cache.py: Implements LRUCache.
url.py: Switches to LRUCache.
iostream.py: Reraises AttributeError as NetworkError.
app.py: Removes blocking ioloop tracebacks.

Closes chfoo/wpull#97.
Merge branch 'issue/98-attributeerror' into develop
changelog: Updates entry for issue 98.

Closes chfoo/wpull#98
Moves URL filters into new urlfilter module.
Includes missing changes to 79bdfbe25a81bf7845aff12e340a9bee6bb3a89f.
setup.py: Adds WIP cx_freeze support.
proxy.py: Uses regular read_bytes callback from new iostream.

Closes chfoo/wpull#99.
iostream.py: Adds attach() for already connected sockets.
proxy.py: Calls attach() for io stream to register socket properly.

Closes chfoo/wpull#100