make our WrappedSocket compatible with pypy

The changes are inspired by socket.py from pypy and the implementation is
lifted from ssl.py from pypy.

I have another branch where we actually test pyopenssl with tox and travis, we should probably wait until that one is done.

Adresses #449