We now make use of the Binary interface, instead of relying on the caller to provide ByteString objects himself.
By exposing a ByteString functions we actually make this library more confusing; we will now only represent the hex string representation as either Text or String, and any ByteString that goes in or out is always the binary representation.