Status Code Names/Descriptions

This pull request adds printable names for status codes, as both the `requests.status_codes.name` dictionary, and accessible directly from a Response object as `Response.status_name`.

I think it's quite a useful thing to have, say for printing out a name to go with a given status code (especially in the event of a failure.

And uses cases:
```python
>>> import requests

>>> r = requests.get('https://github.com/timeline.json')
>>> r.status_code
200
>>> r.status_name
'OK'

>>> r = requests.get('https://github.com/timene.js')
>>> r.status_code
404
>>> r.status_name
'Not Found'
>>> r  # I also added the status_name to __repr__'s output, so the below is easier to understand at a glance
<Response [404: Not Found]>

>>> requests.status_codes.name[200]
'OK'

>>> requests.status_codes.name[203]
'Non-Authoritative Info'

>>> requests.status_codes.name[405]
'Method Not Allowed'
```

We may even want to add a `requests.status_codes.description` dict later on, having something like a one sentence description of what the code means. Maybe even create a Status class, with the members `code`, `name`, and `description`, accessible as `Response.status`, so you'd do something like this instead:
```python
>>> r = requests.get('https://github.com/timene.js')
>>> r.status.code
404
>>> r.status.name
'Not Found'
```

Thanks for the awesome library. I dunno how I ever lived without Requests :smile: