Refactor (de)serialization to support raw Bytes (fix #27)

Here's new design draft.

General:

 - Rename Read/Write to parameterized Reader/Writer and make them private[redis]
 - ByteStringReader/Writer for Array[Byte] and ByteString
 - trait Format[A] extends StringReader[A] with StringWriter[A]

Command-side:

 - ~~Change Stringified to Serialized and wrap ByteString instead of String~~
 - Refactor command serialization logic to deal with ByteString earlier

API:

 - Revised `bitop` and `hmget` according to our multi-arg convention