Give a bit more information from APIError to the client.

We're putting a json object in the body of the response when reporting
an error to the client. This is at least a step closer to what we want.

We now also have the ability to override the http status code.
Add some more status codes.
Kill Flask.

...and use Werkzeug directly.

The logic is pretty much the same. Most of the decorators have moved to
a new module, haas.http. haas.api has otherwise barely changed.

Along the way I cleaned up various error messages and added some
comments that aren't strictly related to this patch -- they just
happened to be needed in code that I ended up touching.

This could certainly use more testing, and if nothing else I want to run
the deployment tests before merging.
Fix syntax error in requirements.txt
Remove confusing/unnecessary part of docstring.

@gsilvis suggested getting rid of this.