Merge pull request #243 from damianh/RemoveSqlSharding

Remove sql sharding
Big fundamental change... Instead of a single Commit object we have an ICommit that comes *from* the storage and a CommitAttempt that is used to go *in to* the storage.
The reason is that checkpoint facility is now ICheckpoint (instread of int) and which needs to have different implementation per storage engine. Also, the checkpoint value is
generated on storage engine side *after* a CommitAttempt has been successfull.

Significant knock on effect on all the tests and storage engines.
Guard against null commit attempt.
Included single event so CommitAttempt is valid.
Remove unused method.
Remove test "when committing an empty attemp" - it's not possible to create empty attempts due to guard clauses.
Return ICommit from moq setup
Remove test that assert non-positived stream revision - not possible to create a CommitAttempt due to guards
Add Guard to ensure commit sequence is not less than stream revision in CommitAttempt
Remove test that asserts non positive commit sequence in CommitAttempt as it's not possible due to guards.
Return commit from moq setup.
Remove redundant test due to CommitAttemp guards
Merge branch 'master' into ApiRefactor