Python 3 compatibility for CRUD view and tests

`Exception` in Python 3 no longer has a `message` attribute. Due to differences in Python 2 and 3, applying `str()` to the exception would not work reliably either. It seems that using `args[0]` is the safest choice, except for `ValidationError` which has a `message` attribute on its own.

Additionally there have been some changes for decoding the request and response contents, for the same reasons as outlined in #41.