Bind socket.end() rather than directly assign.

Fixes situation where socket doesn't release. Directly assigning the `end` function will result in context loss. 

Prior to this change any time I called `insteon.close()` I would not see it fully close until the timeout several minutes later, after this change it closed immediately.