refactored IServerSelector to return multiple servers.  Added ISession an implementations and refactored Operations to be based upon sessions.  This gives a better API for high-level code.
moved Messages into their own folder.  Operations became Protocol and then added new Operation classes to work with sessions better.
refactored CommandOperationBase to not take the command result as a type parameter.
Added default serializer lookups such that providing a serializer is only required when the defaults aren't valid. Removed operation ctors taking a session.
added prefetch ability to a cursor to allow get mores to be called before the current batch has finished iterating.  Default is to not prefetch.
Operations returning cursors now implement IEnumerable.
clean-up
moved most exceptions to the root.  Added MongoDuplicateKeyException.  Added tests for InsertOperation.
fixed 2 bugs in the Cursor.
removed Cursor prefetch implementation.
fixed cursor to support limit properly.
made changes per code review.
Some further renaming and minor refactoring.
minor fixups.
-added catch in case an exception occurs before a cursor is created.