pyopenssl: fix WantReadError when using a timeout

Fixes the issues mentioned in kennethreitz/requests#749

Prevent WantReadError by using a fileobject which correctly handles those.
socket._fileobject which was previously used only handled builtin `EINTR` which
are is the corresponding error from the stdlib to WantReadError.
The new implementation inherits from socket._fileobject overwriting read() and
readline(). The overwritten methods are taken straight from CPython 2.7.5 and
modified as follows in the relevant places:

```
-except error, e:
-    if e.args[0] == EINTR:
-        continue
-    raise
+except OpenSSL.SSL.WantReadError:
+    continue
```

urllib3 itself only needs `readline()` overwritten, but requests also needs
`read()`.
The handshake could have been handled automatically by writes and reads, but
when requesting the certificate directly after connection setup an error is
thrown.
pyopenssl: make getpeercert behave like stdlib
Merge pull request #233 from t-8ch/pyopenssl_want_read_error

RFC: Fix WantReadError when using pyOpenSSL and Timeouts
avoid calling 'close' on a None object
Merge pull request #234 from tmclane/dont_close_none

avoid calling 'close' on a None object
don't raise ProxyError in VerifiedHTTPSConnection

Reverts a part of 51d485a (introduced in #221)

Before this path SocketErrors were always wrapped in ProxyErrors.
This should only happen if the connection is to a proxy.
Just remove the check as it will happen anyway in HTTPConnectionPool.url_open
Merge pull request #235 from t-8ch/incorrect_proxyerror

don't raise ProxyError in VerifiedHTTPSConnection
Updated ConnectionPool example in doc (fixed #237).
Ignore strict Connection param in Py3.
Merge pull request #239 from shazow/238-deprecate-strict

Ignore strict Connection param in Py3.
Merge master into branch.

Resolve strict python3 merge conflicts
Add usage example
typo