Requests can return all headers

At the moment, most useful for testing. Could become valuable in the
future, too.
RequestBuilder can build invalid request

Invalid requests, such as "phantom" requests, should not break the
high-level functionality of the server (i.e. accept request and generate
response). The RequestBuilder can therefore build an invalid Request
object deliberately, knowing that something further down the line will
understand how to handle an invalid request (namely, generate a 400
response).