Raise exception if response does not match Content-Type header

After sending a request, there should be an exception if the response Content-Type does not match the request Content-Type. (ie: `text/xml` vs `text/html`)

(For backwards compatibility, this could be configurable with with an optional boolean argument)

## Expected Result

An Exception should be raised if the response Content-Type does not match the request. 

## Actual Result

The request will proceed without any warning, even if the response Content-Type does not match.

## Reproduction Steps

```python
import requests

url = "http://www.example.com"
xml_data = "<Request Object='System' Action='Ping'/>"
headers = {"Content-Type": "text/xml"}
response = requests.post(url, headers=headers, data=xml_data)
print(response.headers)  # {'Content-Type': 'text/html'}

```

## System Information

```
{
  "chardet": {
    "version": "3.0.4"
  },
  "cryptography": {
    "version": ""
  },
  "idna": {
    "version": "2.6"
  },
  "implementation": {
    "name": "CPython",
    "version": "3.6.4"
  },
  "platform": {
    "release": "7",
    "system": "Windows"
  },
  "pyOpenSSL": {
    "openssl_version": "",
    "version": null
  },
  "requests": {
    "version": "2.18.4"
  },
  "system_ssl": {
    "version": "100020bf"
  },
  "urllib3": {
    "version": "1.22"
  },
  "using_pyopenssl": false
}
```


Correct me if I'm wrong but isn't this fine?

The content-type header in the request tells the server what type of data you are posting, the content-type header in the response tells the client what type of data the server returned.

Are you thinking about the Accept header where the client informs the server of which content-types it can handle?

@colinfike I did not know there was an Accept header.

If I understand correctly, if I specify `text/xml` in the Accept header, an exception will be raised if the server response doesn't match that type?

Essentially, I have an application that allows the user to send XML data to an arbitrary URL, so I want to validate that the server responds with valid XML data.

There is an HTTP error code [406](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/406) specifically for this situation, it seems though that it's rarely used and a server would much rather serve SOMETHING rather than nothing.

Considering that and the current way requests already functions, it probably doesn't make sense to throw an exception if a response header wasn't returned as expected. It would cut down on the flexibility of the library (plus it doesn't strike me as that exceptional of a situation).

A solution can easily be made though through the data requests exposes to us. You could check headers of the response to see if the `content-type` is `text/xml` as you expect assuming you always expect a xml response. Something like `response.headers['content-type']` would return the value of that header which you could then compare to the expected value and then handle that accordingly.

@colinfike Thank you for the advice. I was able to verify the content with a manual check.

```python
import requests
from requests.exceptions import InvalidHeader

url = "http://www.example.com"
xml_data = "<Request Object='System' Action='Ping'/>"
headers = {'Content-Type': 'text/xml'}
response = requests.post(url, headers=headers, data=xml_data)

actual_type = response.headers['Content-Type']
if 'text/xml' not in actual_type:
    raise InvalidHeader("Response Content-Type does not match.\n"
                        f"Expected: 'text/xml'. Received: '{actual_type}'")
```