protocol: Define the Command type
The Command type was a bad idea - we should just use strings
protocol: Modify the signature of Conn.Send and Conn.Receive

- Both methods are now aware of commands (in the shape of strings).
- Conn.Send now allows int, int64, string and []byte as arguments
  to a message, and will serialize all types properly.