Add more API tests (and other API-related changes)

The individual commit messages detail what's in this commit pretty well. In short, I've added some tests for four more sets of API URLs, standardized the error messages produced by tests, improved the quality of error messages produced, and added support for `SomeField(default='foo')` and `SomeField(choices=(1, 2, 3))`.
:+1: we don't need a `ShortStringField` as we can control the length of `StringField`