signature now returns native type for both python2 and python3

I ran into a bug where the validator would always return false in python3. I noticed the `compute_signature` method uses `base64`, which returns a bytecode string. Python3 uses unicode strings as default instead, and the two always compare to false. This pull request should fix that.

### Summary of Changes

- Added extra parameter `utf` to `compute_signature`, which defaults to True in python3 and False in python2
- If `utf` is True then `computed` will be coerced to a unicode string
- Added tests to cover both versions.

All tests pass in both python2 and python3, returns the native stringtype for both in interactive prompt, happy to do other checks if needed.