Combining variables / defaults once

Rather than combining variables for the cache key and for the execution
of the curl request, we'll do it once.

I've normalised the variables once in request() and curlRequest will
expect the values it  gets to be the ones to use.
Removing hard coded useragent

Rather than hardcoding the useragent into the request, this should now
be set via a (default) header

Added the default SS user agent to __construct()
NEW Made caching only work on configurable methods

Caching can now be set dependant on the request method being used.

By default we only cache GET, HEAD and OPTIONS requests.
Removing assert call from request

`assert()` should only be used for debugging (see:
http://php.net/manual/en/function.assert.php)

I've changed it to throw an `InvalidArgumentException` as that's what it
is.
Default timeout now configurable

The timeout is now settable via the curloptions rather than hard coded.
FIX RestfulService now handles body data for all request methods

Added ability to add request bodies to all methods. It is not strictly
against the HTTP standards to do this so we're able to make DELTEs with
bodies work as well as normalising the request methods.

I've also cleaned up some formatting issues here
Adhering to coding standards

Fixing coding style
RestfulService_Response uses parent::__construct()

Made the code a bit more DRY so that the parent::__construct() is relied
upon
Tests

Fixing the test so that it doesn't assume the headers and curl options
are empty