Make `Response` have a friendlier interface

This makes the `Response` interface friendlier, primarily for use
in tests. This demeters the `Response.status` message so it doesn't
have to be accessed through `status.message`. This also adds
writers for code and message which makes them consistent with data
and is helpful when testing responses. Specifically, `AndSon`
wants to be able to configure protocol responses and its convenient
to provide a default response and allow its code, message and data
to be altered.