Static cache of ProfiledMongoServer instances

Borrowing from MongoClient.GetServer() and MongoServer.Create(), use a static dictionary to cache instances of ProfiledMongoServer so identical instances will not be created, leaking server connections.