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))`.
To avoid create lambdas for plain value what about to check if default is a callable object and calls it? Or, otherwise, use the default directly?