[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 should probably look at what stdlib is doing at this point.
Could you check what happens with the plain ssl module with your test case?
I am not sure your fix is the right one at this layer of abstraction. Even if we catch the thrown exception higher up and return this value we should stay compatible.