Status problem

Fixes #115 by changing the library to use the HTTP status code (which will always be present) instead of the `status` reported in the JSON response. This will probably require a version bump (eg 3.9 to 3.10) as it may break clients. We hope we would report the same status in the body and in the HTTP response, but you never know.

Also refactors a bunch of tests to use a common http mock creator, and fixes some warnings about incomplete tests