Api errors

I standardized all API responses to be of the following format:
```
{
    "status": <http code>
    "message": <arbitrary message>
    "data": <json>
}
```

You can create API responses with the `create_api_response(status, message, data)` method and return them in a Flask endpoint.

Another major change is that I added a decorator that handles any errors that may happen (`handle_error`).

Of course, I've updated the tests to reflect these changes.