Disagree :) 

I needed `Set` here and noticed that both `Set` and `Thread` were being required redundantly in many places elsewhere in the driver. I consolidated them into one require and fix all references as part of this PR rather than adding yet another redundant require into the mix.

Somewhat related though: I originally had a lot of stuff I was moving into client, but then ended up whittling that down to just changing the default db and this change to the requires. While I was working in this file, I cleaned up and touched a number of other things. However, after your feedback last week, I actually updated this over the weekend and removed my changes to the default db. 

As a result, all the changes to MongoClient except fixing the requires is actually non-essential to this pull request. I left it since I felt some of the changes were good, but I can happily pull everything except the require changes out of this if you want and submit that separately.