fixed race condition between txCommit and txRead transactions (wrong Id was assigned)
assigning txId just before tx is created to prevent txId miscalculations
cursor fix for overrides + some debug assertions that that will fail when page is reused too early
more debug code
Prevent flushing and especially freeing pages that can be in use by read transactions (snapshots). It fixes the following problem:

- a tree iterator could pop an invalid page from its cursor what caused an improper iteration, the page in a cursor (taken from scratch buffers) could be changed by a write transaction because it was marked as free (when ApplyLogsToDataFile was performed concurrently)
Removing unused methods
Minor fix
added failing test
fixed issue with Transactions being removed from the list of active transactions to early, which caused inappropriate calculations of list of pages to release from scratch file
renamed test
minor
exposing issue with freeing pages from scratch to early
refactoring
changed to read lock in ConcurrentList.GetEnumerator
moved 'EnterReadLock' outside tryf block
Merge commit '4ae5ffe401406398992c125d13ff96f30708b51f' into New3

Conflicts:
	Raven.Voron/Voron.Tests/Bugs/FlushingToDataFile.cs
	Raven.Voron/Voron.Tests/Voron.Tests.csproj
	Raven.Voron/Voron/Impl/ScratchBufferPool.cs
	Raven.Voron/Voron/Impl/Transaction.cs
	Raven.Voron/Voron/StorageEnvironment.cs
	Raven.Voron/Voron/Trees/Cursor.cs
	Raven.Voron/Voron/Voron.csproj
minor changes after Voron subtree pull
Merge branch 'New3' of github.com:ayende/ravendb into New3
Merge branch 'New3' of github.com:ayende/ravendb into New3
minor fixes so unit tests pass + minor tweaks to unit test code