Update to psr/http-message 0.5.1

This patch updates phly/http to psr/http-message 0.5.1, which included a number of large changes. First, request/response pairs were separated into two contexts, client-side and server-side requests. In each case, one of the pair is now considered immutable, which means that the same objects cannot be used in both contexts.

- An _incoming_ request represents the state passed to a _server-side_ application, and is immutable (except for attributes, which are a product of examining the request).
- An _outgoing_ response is the product of the _server-side_ application, and is fully mutable to allow iterative creation.
- An _outgoing_ request is built to send via a _client-side_ application, and is fully mutable to allow iterative creation.
- An _incoming_ response is the product of a _client-side_ request, and is thus immutable.

As such, `Phly\Http\Request` and `Phly\Http\Response` were removed, and client- and server-side variants of each created (though `Phly\Http\IncomingRequest` existed previously; it has been updated to mirror the changes in psr/http-message). A number of new traits were created to reduce code duplication, and are composed in the appropriate concrete implementations.