Better responses

This abstracts out generating responses to S3 requests, and tests them more thoroughly.

There are still a few pending things, particularly around request ID generation.