What problem does this PR solve?
Issue Number: close #10068
cc #6402
Problem Summary:
engine_traits contains a bunch of traits encapsulating rocksdb TableProperties and UserCollectedProperties. These are so rocks-specific there is no hope of other engines implementing them. The preferred way to write abstractions that rely on rocks table properties is to add high-level methods that answer questions that, in rocks, are answerable with table properties, letting other engines answer those questions however they can.
What is changed and how it works?
This PR removes these traits from engine_traits. It leaves in place the types inside engine_rocks that implemented those traits, just without the trait implementations, as there is still code inside engine_rocks that uses these types. Some support code from engine_traits::properties is moved into engine_rocks::properties_types.
There are only two places outside of engine_rocks that rely on these traits: a test case in sst_importer, and the debug module in tikv. This patch does not address those cases, and they continue to depend concretely on engine_rocks after this patch.
The test case can linger for a while, and I'll address the debug case soon.
Related changes
Check List
Release note
None