A more generic way of duplexing

See Protocol.hs
Protocol tested.

Seems to be ok, though monadic quickcheck is a bit too low. Is it a
bug on the windows' impl of quickcheck or in my code?