Made CrawlService much more coherent.

* Decoupled work pool specific stuff and tucked away neatly in a new class.
* Introduced notion of "NntpCallable<T>" and "NntpRunnable".
* Same as their obvious named counterparts, but provide a NntpClient instance.
* Changed CrawlService to use ListenableFutures in a separate thread pool.
Fixed up refactor of NntpWorkPool stuff. All works nicely again.
Merge branch 'master' of github.com:samcday/bincrawl