PYTHON-736 - Don't close sockets on OperationFailure

This also speeds up returning exhaust sockets to the pool
when the server returns an error and fixes the tests to
run against all MongoDB versions we test against.