Use ResponseBody to model the response body everywhere.

This makes cache writing and gzip layering work a bit nicer
because there are fewer fields in HttpEngine to track the
various competing streams.