[WIP] Pyopenssl refactor

*Do not merge (yet)*

See #370.
Introduces the `suppress_ragged_eofs` parameter for stdlib compat.

I'd like to have the testsuite also cover pyopenssl before merging this.
Maybe @alekstorm would provide a pull request with only his testsuite changes, so we could do this.
We've been running into another issue (we're using PyOpenSSL because we need 2.7 SNI support). We often get a SysCallError with a ECONNRESET code.

forking `requests`, and patching the included `urllib3` package with this PR, and adding this:

```python
elif e.args == (54, 'ECONNRESET'):
    return b''
```

on this line appears to fix it.
I'm not very familiar with requests, urllib3, or pyopenssl so I have no idea why this fixes our problem. Could you shed some light on why this works?