Use SetItems instead of AddRange to force updates of existing items
Write optimization - when doing a page modification don't modify the entire branch from the root but just the actual page and save it into log file
Rebalancer should use the modified version of parent page (otherwise would modify an parent page that already exists in a log file and it could be read by another transaction)
Added one test for writes optimization
Ensure that page splitter works on modified version of the page that is split
Now dirty pages never reference a page with different number.

When a page is modified and it's in dirty collection we always can take it either from cursor or a log (never directly from the data file)