FDBShell: added "top" and "last" commands + tweaked "sampling"

- "top" shows the N first keys, "last" shows the N last keys
Tuple: added helper methods to pack keys that must be extracted from some other type, to reduce memory allocations

- since the selector will usually be a static lambda, it should be cached at runtime
- ex: app code as a KeyValuePair<KEY, VALUE> and want to PackRange the .Key (or .Value)