Huge refactor to support man-in-the-middle

- All packets can now be read from and written to streams
- Refactored packet structure
- Some additional work still needed to accept client connections
Most of the work for #11

Still has a bug that prevents it from doing the complete round trip.
Fixes #20

Props to @theGuyFromHell
Surrender field identified

Props to @IvanSanchez
GameOverReasonPacket and GameOverStatsPacket
DifficultyPacket, fix to GameOverStatsPacket

DifficultyPacket now implemented, GameOverStatsPacket wasn't writing
columnIndex field
BeamFiredPacket updates, documentation work

Resolves #22, improves documentation for PacketReader and PacketWriter
Unit testing, non-float version handling

Can now parse non-float version numbers (e.g. 2.1.1), support classes
for unit testing, unit tests for WelcomePacket and VersionPacket
Merge pull request #28 from rjwut/2.3.0

Merging version 2.3.0 into master (#28)