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