ByteString migration

In order to resolve issue #1 and support arbitrary binary strings as
keys and values, a ByteString is now used instead of a String where
appropriate.

Currently, the responsibility is on the library user to provide
convenience functions for working with the ByteString type.
Updating build file for Scalaz 7.1.0-M3
Using a tuple for the range on bitcount

The reason is because the command requires that when a range is
provided, both a start and end must be given.
Merge branch 'feature-bytestring-migration' into develop