MemoryDB: Added USlice.Equal(obj) and USlice.GetHashCode() methods
MemoryDB: removed db.LoadSnapshotAsync(..) because overwriting an existing db instance is too dangerous

- must use MemoryDatabase.LoadFromAsync(...) instead
MemoryDB: refactoring on the memory layout of keys and values (work in progress) and heap allocation strategy

- Reduce the size of the flags to make more room in keys and values
- Use buckets for different page size in the heap
- Added default System Keys in new empty dbs
Fix for a weird Roslyn compilation bug that breaks tuple encoding of string with NUL chars

- If the call to WriteNulEscapedBytes(...) is outside the fixed statement, it is not present in the generated IL code for the method (!?)
First step to fixing bug with Take(N).Reversed() and initial implementation of Skip()

- still need to fix possible range overflow bug