Utilize Netty to take care of network communication.
- peer to peer message delivery
- heartbeat
- ProtoBuf serialization
- basic logging
- async logging(but with ugly working-thread closing)
- message routing
- authentication server
- offline message storage
- a gui client
- deliverable server/client jar
- application level ack