ENH Prefer requests over urllib2

At the moment we use urllib2 for http requests, this branch prefers to use requests if it's installed. For one thing it means you can read gzipped json, which is more difficult in urllib2:

```
url = 'https://api.stackexchange.com/2.1/search?page=1&pagesize=10&order=desc&sort=activity&tagged=pandas&site=stackoverflow'
result = pd.read_json(url)  # in master this raises ValueError: Expected object or value
```
cc #3804 @jreback

Thoughts?