address issue #17894 with the close method. I tested against test_socket...

I notice when a _fileobject is created it check is a typeof socket if it is not that type it wraps it around PythonUserSocketStream and implicitly the _socket is set to null, I change that to be explicit. 

The change is on the close method if _socket is null check if the stream is not null and not closed, indicating that the PythonUserSocketStream is being use. If so call that close method. 

I then check in the PYthonUserSocketStream if the userSocket has a close method, if so call it. 

The other change _isOpen is set to false if a None object is passed in, this is the same behavior has CPython. I had to do it after the base.__init__ since it hard coded to always set _isOpen to true

I tested this against the test_socket_cpy and urllib2 and it passed.
PythonOps.TryGetBoundAttr will save a lookup, and has an overload that passes a DefaultContext anyway.