eliminate two mutabls and a while loop with a recursive nested function in writeOverflowFromStream
kill off two more mutables
only realloc the leafKeys array when it's too small.  don't rely on leafKeys.Length to be the actual number of keys inside it anymore.  introduce countLeafKeys field to keep track of that, since sometimes the array is bigger than the actual number of keys inside.
only call v.Length once for each pair in btree.create.  profiler says it's surprisingly expensive.
rewrite PutVarint for perf.  Much faster to not use the inner function.
replace two if statements with pattern matching
rewrite byte compare code fs for perf.  much faster.
fs byte comparer can be just a module now instead of a class
fix names of byte compare funcs
chg byte cmp funcs to curried params
in multicursor seek, use List.exists instead of List.iter so that the search will stop looking at subcursors when a winner has been found