JsonResult to derive from ObjectResult.

Just realized #2 is already handled. 
For #1 though there is no clean approach, there is no way of identifying whether the user added the content types using 
```c#
var json = new JsonResult(new { foo = "bar"});
json.ContentTypes.Add("application/my-thing+json");
```
Or it came from produces. So at best we can say add to the content type collection instead of ignoring/overriding the existing values.