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.
I like the new static implementation. However, this breaks the API, which would mean that we would need to make this a new major version, something that I would rather not to at the moment. So could you please add back a way to instantiate a new ProfiledMongoServer constructor (which itself would use the static call)? You can mark this with an `[Obsolete]` attribute to discourage use if you want. But I would like to find a way to avoid breaking the API at the moment.