Implement message verification and key generation

Add Message module for HMAC-based message format and verification, and
Key module for secure generation of client key, secret and session ID.

Add MutableGen module to the test-suite, for generating mutated values
in QuickCheck. This is used to test that message integrity is checked.

Add build-depends cryptohash (HMAC), monadcryptorandom (key generation),
mtl (ReaderT), stringsearch ([ByteString] serialisation), transformers
(MonadIO).

Add test-suite build-depends byteable (HMAC mutation), DRBG (for key
generation), tagged (DRBG), tuple (MutableGen tuples).

Signed-off-by: Stian Ellingsen    <stian@plaimi.net>
Reviewed-by:   Alexander Berntsen <alexander@plaimi.net>
Signed-off-by: Alexander Berntsen <alexander@plaimi.net>