Lock-free commit check
Lock-free version tracking.

The VersionList is significantly changed to no longer be just a dummy list
of open readers. It now contains a list of all written versions, between the
oldest one being read and the newest one written in. It is now in charge of
trimming, and it can do it without any additional data structures.

The only remaining lock statements (if not compiled with SERVER flag) are now
the ones used to safely remove items from concurrent dictionaries.

Also, perhaps surprisingly, this version is actually faster than the simple
lock-using one.
Fix for the GetReaderTicket method.

The theoretical problem should be solved now, and it is impossible
for a reader to get a stamp which has already been cleaned up.
Minor clean-up of the VersionList
Improvement for VersionList.MoveCurrent()

It was possible after a race that the _current field would not
actually point to the last readable version. This is a serious issue,
since it would make certain writes invisible to new transactions,
and if they conflict with them, then retrying them would NOT help -
they would again read the faulty _current, thus again not seeing the
writes that they conflicted with! Only a write which would manage to
avoid conflict with invisible versions would eventually correct this,
but in the meantime, infinite loop.
A trivial Bloom filter for the SimpleHashSet
Git-ignoring .usertasks
Safety for interrupted committing

If a new version is added into the VersionList, this version must
eventually have its Changes set to something != null, otherwise the
trimming process would never get past it, and we would have a version
leak. This improves the commit code to guarantee this.

Also, some minor comment fixes.
Merge VersionList from LockFree branch to master

Basically, everything from the LockFree branch is now merged, except
the actual CommitLocker. So, master still uses one global lock during
conflict checking, but the lock-free VersionList is a nice improvement.