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.
Add support for legacy class loading
Always include the composer autoloader
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