collWithKeyCompare() function.
Use walrus.CollateJSON for vindex emitKey comparison.
Handle views file memory-only mode.
Don't shadow err.

This might be related to bug-564.  Maybe.
Atomically update vindexes with backIndex.

This helps to stop races with a concurrent views compaction, helping
keep backIndex and vindexes consistent with each other.

As part of this, added a partition.setWithCallback() to support the
atomicity.  And, a viewsRefresh_unlocked() to make it more clear to
myself on what's happening with shorter functions.
Revert "Revert "Use startKey/endKey to scan vindex range.""

This reverts commit 94ce688d8f66f82fb115fd36f8f0894ca9c1f811.