Tests, isolation of components, general code-cleanup.

* Moved Network-specific client/worker interaction out of JobStore and into NetworkManager to make JobStore untied from workers and clients
* Made worker / client an interface so NetworkWorker/Client can wrap the Netty sockets and hide them from the world
* Moved Job into common package and moved packet-specific bits into the NetworkManager.
* Made most of the important bits more isolated and testable
* Implemented a fair number of tests
Updates to .gitignore
Namespace re-organization, bare-bones SSL support (self-signed, hard-coded certificate)
Further untangled Job from other classes, job coalescing now works.