Separating the POW thread and all peer networking classes

This is quite a huge separation and I'll admit it is certainly not perfect (and somewhat messy), however it seems to function correctly and really splits up the code base in to more manageable chunks.

As with my previous separation pull request, I'd love for feedback, opinions and external testing. If anything is majorly broken with this pull, please advise and I'll fix it as soon as I can.