Port to bytestring + attoparsec

Use bytestrings for wire transfer and
attoparsec for value parsers.
cabal: restrict dependency version ranges

Currently, the lower bounds are arbitrarily
set to the latest Haskell Platform.

Ideally, all lower bounds should identify the
oldest version with a compatible API, and the
upper bound should guard against possible
API breakage (i.e., a bump in the major version).
Use Text for client request bodies

and convert to UTF-8 encoded bytestring
before wire transfer.