Allow SDURLCache to be subclassed instead of hijacking SDURLCache's methods

There are some times when you need to strip out some query parameters like oauth_timestamp, oauth_signature, etc. In my particular case this is the only auth method possible, via query string because the server doesn't provide support for Authorization header auth and because of that I've added the following things to help me cache some requests.

Added shouldRespectCacheControlHeaders property and PrivateMethods category for subclasses.

Added some debugging info and made the canonicalRequestForRequest: method to be called in subclasses.