Only create classes for useful exceptions

I was wondering how to make classes for the exceptions that the API
could throw, and realized that only some of them are useful to a client.
Things like "Method Not Allowed" are more of a "you did it wrong" thing,
while "Resource Not Found" is comprehensible and could have its own
error message for the user.
Switch to returning whole JSON-decoded object
Add support for creating objects