Vast array of changes, which have been untracked.

I'm a terrible person.
Quick overview:
- I've gone back to using a centralised select for listening to all the
  sockets.

- I've ditched some of the encryption functionality - let's get the
  backend working *properly* before we get excited, especially as we're
  not working to any project deadlines anymore.

- Added a dechunker, so we can properly read packets in. Atm we send
  them on unchunked, but ideally we'll either:
   - Rechunk and send, although this will add a nasty delay to packets
     as they go through, hopefully not too relevent when compared to the
     latency on mobile devices these days.
   - Create some kind of state machine which can alter the packets as
     they go through. This may be impossible if we're altering things
     later on (which would change the message length). We could get away
     with perhaps adding a bit of space and then padding if neccessary?