fix($http): parse JSON only if Content-Type header contains string 'json'

The default behaviour causes issues with a wide variety of custom
interpolation markers. Even if the JSON test regexps were strengthened to
closer match the standard JSON format, it would still limit the possibilities
of different custom interpolation markers.

BREAKING CHANGE: Previously, responses would be parsed as JSON if their
content looked vaguely like JSON. Now, they are only parsed as JSON if their
Content-Type response header contains the term 'json', and if they are not
coming from the $templateCache.

Closes #5756
Closes #2973