Refactoring MongoFields,
Added IComparable to LongCheckpoint
CheckpointNumber is the new document id (Commit)
Refactored Field Names
Implemented optimistic loop with garbage collector
Changed the indexes on the Commits collection:

Removed the Events.StreamRevision index and replaced with two different
fields: StreamRevisionStart, StreamRevisionEnd which are tied to the
revision of the first and last event in the Commit.Events collection.
Fixed the StreamRevision numbers

Fixed the GetFrom Query
Changed the schema of the Commits, removed the BSonDocument that was used as the 'locical identity', flattened the entity a bit.
Renamed fields: StreamRevionStart -> StreamRevisionFrom, StreamRevisionEnd -> StreamRevisionTo
merged upstream changes
fixed a failing test
Merge pull request #291 from andreabalducci/mongoprovider

new MongoProvider, closes #273