Seperate out protocol handling from connection.

This cleans up `Connection` a lot, adding in a new class (`Protocol`) that handles the underlying ASCII or Binary protocol. This is cleaner but also allows adapting mutilate to new protocols easily.

(I did this as I needed to do exactly that and am currently using mutilate for testing performance of a paxos implementation).