Encoding Corrections

- UTF8 is not always the encoding so take those cases into account.
- Cached requests were om-nom-nomming the content-type header's charset= parameter.
- Also added the character set to the cachekey because some optimized APIs will return UTF32 for logographic languages and UTF8 for latin-alphabet characters.



A description of the problem: when you have a response with utf-8 encoding (in my case a Web Api 2.0 Controller returning UTF-8 encoded json) the first response goes through fine but subsequent cached requests do not return the appropriate Content-Type header, because it removes the charset parameter.

IE. For the first request the response is:
```csharp
actionExecutedContext.Response.Content.Headers.ContentType.ToString() == "application/json; charset=utf-8"
```
But only the application/json part (ContentType.MediaType) is being used/stored on the cache.

```csharp
actionContext.Response.Content.Headers.ContentType.ToString() == "application/json"
```

This is a quick pull request fixing the issue.