Refactored Server

- Made constructor public, and all arguments required
- Modified createServer() to expect middleware instance, and `$_SERVER` array
- Added createServerFromRequest() method, which expects a middleware instance, a
  request instance, and optionally a response instance (if no response is
  present, it will create one).
- Updated documentation to reflect these changes, as well as the
  `RequestFactory::fromServer()` method.
Add more test coverage for Server
Merge branch 'feature/server-factories'

Better separation of concerns: do not use $_SERVER directly within OOP code.

Modified `Server::createServer()`'s signature to remove request/response
arguments, and replace them with an `array $server` argument. Added a
`Server::createServerFromRequest()` method to expect middleware and request
arguments, and optionally the response. Made the constructor public, but all
arguments are now required.