Refactor to strict PSR HTTP message interface interpretation

Refactors this implementation to strictly follow the PSR HTTP Message 
interfaces. This means:

- Removing `Phly\Http\ResponseInterface`.
- Updating `Phly\Http\Response` to only implement
 `Psr\Http\Message\ResponseInterface`.
- Removing property overloading from `Phly\Http\Request`.

Making this change also allowed reworking the request and response to use a 
trait instead of extending an abstract class.