Tidy up error handling

Use Response.raise_for_status so users can catch requests errors
Create a custom exception class rather than relying on RuntimeError
which is archaic and gives the wrong message (with it's name).
Bump version to 1.1.2