In Py3 decode the output of base64.decode

The return from a base64.encode in python 3 is bytes. Bytes cannot be
json.dumps() so when we base64 encode some data we need to convert it
to a string before passing it through to the request layer.

This isn't shown by unit tests because the fakeclient mocking layer
intercepts the request before it gets to the json encoding code.

Closes-Bug: #1323450
Change-Id: Ibbbb24f64c17069178e3bf0ee9998b806bc629ff
Removed now unnecesary workaround for PyPy

Change-Id: Id23fdf62352a1575653d2277f7b87d371b0480c8
Merge "Removed now unnecesary workaround for PyPy"
Merge "In Py3 decode the output of base64.decode"