Created MessageUtils class to begin handling message
packing/passing/unpacking in a somewhat regular way.

Refactored client/server threads to start passing and receiving
messages with the "need-to-know-basis" pack/unpack message routines.
Client code can now receives different types of messages with the
same call, and figures out how to handle each after receiving based
on a tag.

Created test protocols to pack, send, handle:
->normal chat messages -> "bill: hi"
->disconnection announcements -> "User bill has disconnected"
->new connection announcements -> "User bill has joined."

Handshake procedure (sending handle and receiving current connections
list) is still done the old way for now.

For now, message passing is built on array transfer, but by using the
pack/unpack routines we're fairly insulated.