Lots of changes

- Packet.java was renamed to IPacket.java and is now an interface
- Added PacketPayload to each packet class
- Packets now write their payload to stream
- Added a logger
- Removed spaces from the end of files
- Added some new utility methods
- Reverted the thread starting to the Java 6 & 7 format
- We now write the protocol version packet to stream when a connection
is made
- We now print out incoming packet ids