API: Use an interface for defining request filters

Request processors must now implement the PreRequestFilter or
PostRequestFilter interface.
Move coupled request output logic into request post processors
API: Include the extension in request URLs

 This fixes the issue where requests with different extensions would resolve
 to the same resource.
Reworked HTTP response redirection detection

* Any 3xx status code is now recognised as a redirect.
* Added an isRedirect() method to check if a status is a redirect.
Remove unused director url params related code
Extract common request/response functionality into a base class

* Both the request and response classes inherit from the base message class.
* Setters consistently return object instances.
API: Consistently name HTTP header methods

* SS_HTTPMessage->addHeader() has been renamed to setHeader().
* SS_HTTPMessage->removeHeader() has been renamed to unsetHeader().
API: Made HTTP request method names more consistent

* Renamed SS_HTTPRequest::httpMethod() to getMethod().
* Properly case method names.
API: Make request constructor args optional and remove null request
Add PSR-0 autoload definition to composer.json
API: Change Director::test() to accept request objects

Rather than accepting an argument for each request variable, a request
object is used to provide these details. For simple cases a URL can
still be used.

This means that GET variables can no longer be included in the URL, but
must be included in the request object.
API: Don't include $_FILES vars in request vars

This better emulates the behaviour of the standard PHP request
array. Also added methods to allow accessing files data.
API: Extracted routing functionality into a router class
API: Consistently named http request methods
API: Move SS_HTTPRequest::send_file() into the HTTP class
API: Change the way requests are constructed, and include server vars

* Environment variables (get, post, files and server vars) are now
  passed in as an associative array to the constructor.
* Add methods for accessing server variables on the request.
API: Make HTTP headers case insensitive
Move header extraction to the request class
Move method detection to the request class
Move the overriding of superglobals into SS_HTTPRequest->setGlobals()
API: Add basic auth methods to the request object