Drop socket reference on close.

Closes #1976.
- Prevent the unbounded memory growth caused by maintaining
  a reference to the socket object that is created on every connection.
There's nothing wrong with using a uuid--it's just not necessary.  All we need is a an id number to tag the connection with so it can be yanked back out of the hash, it doesn't need to be globally unique or random.  This is a perfect use case for a simple incrementing counter.