Tidy up downloader.
Re-add listener support.
Add URL Encoding back.
Move indeterminate setting into listening stream.
Add unit test.
Generic class for functions.
Merge pull request #22 from greboid/tidying

Tidy downloader.