Fix a bug with handling of binary data

When checking the length of the data in a request, Barbican assumes
that data is UTF-8 encoded strings.  Barbican then attempts to
decode all data from UTF-8 to byte strings, which results in an
exception when the data does not conform to UTF-8.

This CR also adds the six library as a dependency to add type checking
that is compatible in both Python 2 and 3.

Change-Id: I3e937998c3bd4d5fbe94c89099ba56c26dbb75b7
Closes-Bug: #1315498