PEP8 sweep. Doc strings. Simplify det_hash.
Fix indentation.
Use the high-level interface for sending on socket.

`send` as used now returns a value telling how much was actually sent.
It's not currently being used, so let's keep things simple as use the
high-level interface to make sure all data is sent.
Restore imports.
Re-write `sigs_match`.

This may be a potentially consensus breaking change. I've convinced
myself the function is still *correct*, however there may be some edge
cases which I haven't yet explored.
Use multiprocessing instead of threads for workers.

Python's thread's can't actually execute in parallel. Each thread keeps
a process wide Global Interpreter Lock (GIL), and must release the GIL
when doing blocking I/O, or after a quantum time slice is up. This can
cause some superfluous context switching actually REDUCING performance.

All former items in the "todo" list now run in their own process.
Mining is now MUCH faster, and will also be paralleled to multiple
mining processes.
Refactor mining into simple multi-core CPU miner.

* Spawn new thread who is the mining coordinator
* Coordinator spawns mining processes. Feeds them work via a queue, and
notifies them of solved blocks via an Event.
Dynamically max out cores for mining workers.