fixed infinite recursion error: test forthcoming
using SecureRandom to introduce more randomness for first number, since we only use one
Corrected equals/hashCode of Symbol class by removing equality with String
Fixed bug in IsMasterCommandResult.isSecondary
Added support for tracking elapsed time for all command executions.  Currently used by ReplicaSetMonitor, but it's useful for everyone and can be used for monitoring in the future.
Added support for tracking elapsed time for all commands.
Added more accessor methods in replica set state
Refactored ReplicaSetMonitor to improved testability with a custom mock.   ReplicaSetMonitor has no state anymore.  It's just a thread with a run loop, and all the state is encapsulated in ReplicaSetStateGenerator, which can be tested independently.
Changed location of call to open socket so that it's not included it time measurements
Removing a bad, old test
Changed DatabaseTestCase classes:

1. Using nanoTime instead of currentTimeMillis to avoid possible race condition
2. Ensure that at most one database is created per process
3. Simplified collection name, as there is no need to make it unique per test
4. Added shutdown hook to drop the database and close the MongoClient
Deleted an old test
Renamed MongoChannel.sendOneWayMessage to just sendMessage
Cleaning up tests to leave no residue behind
 checkstyle fixes