adapt based on btree implementation from Abseil Common Libraries.
with following changes:
* remove abseil dependencies. as abseil libraries do support C++11,
they are written in C++11 compatible way. and use its homebrew
alternatives for the facilities offered by C++14 and C++17. but
Ceph is in C++17, so replace those facilities using the ones
from the C++ standard library
* change `key_compare_to_adapter` to adapt to arithmetic types, and
those who have `compare()` defined.
* move SlotPolicy into *_params types, simpler this way.
* continue using *_fields types. the layout facilities is nice. but
we don't need this flexibility at this moment.
* continue using `empty_base_handle` for EBCO, CompressedTuple is
nice, but it involves more dependencies which we don't want at
this moment.
* node handle support is dropped. it's part of C++17 standard for
node-based containers. we don't use it at this moment. but it's
relatively simple if we want to add it back.