Use bytes for keys and values (and implicitly convert str)

bytes/bytearray should be used for keys and values.  However,
one not-so-great decision for the dbm interface in python3.x is
that keys and values are implicitly converted to bytes for you.
IMO I'd either require strs for everything and internally use
utf-8, *or* require that bytes *must* be used for key/values,
and error out if that's not the case.  The way it is now, you
have confusing semantics where::

    val = 'bar'
    db['foo'] =  val
    assert db['foo'] == val # This will fail.

You also can now access a key be either a str or bytes value:

    db['foo'] =  'bar'
    db['foo'] # returns b'bar'
    db[b'foo']# returns b'bar'

However, if we want to be able to be a drop in replacement
for other python dbms (which we do) we have to support this
weird and non-intuitive API design choice.  Damn.
Print full traceback on benchmark errors
Fix int() bug in benchmark script