Adding default curl options

Because I removed completely the static setting of SSL_VERIFYPEER I've
added the ability to declare default curl options on the class. This
means that users that really want to one line turn off SSL_VERIFYPEER
can do so without needing to pass a custom option in every request()
call.
Error responses now get a cached response

When an request errors, a cachedBody gets included, this is now replaced
by a cached response object, so the headers and other info can be
accessed.

The old functions still work and remain.

Tests updated to allow testing of private methods