crimson/onode-staged-tree: implement an extensive Value framework
The introduced Value/ValueDeltaRecorder classes are designed for a
concrete Onode implementation that supports:
* User defined value layout;
* Locate and read the value payload stored in the leaf node;
* Modify the value payload with transaction;
* Value specific delta encode, decode and replay;
* Pin the according leaf node when the Value is alive;
* (interface only) Extend and trim the value payload in tree;
The goal is to decouple the dependencis between the follow-up
onode-attrs/omap/extentmap integrations and the onode-staged-tree
on-going implementations.
There is one limitation currently, that we cannot guarantee any
alignment of the value payload due to the unaligned node layouts and
unaligned split operations.
See src/test/crimson/seastore/onode_tree/test_value.h for an example
implementation which is implemented for test and benchmark purposes.