[RFC] Adding Matching and Inference Functionality to Propeller

Due to the large number of files modified in the previous PR, we plan to split the PR into three parts for separate submission:

Patch 1: Add a pass to calculate the hash value of MachineBlock and write the hash into the bb_address_map section. Related test cases and tools will also be modified.
Patch 2: Introduce a new Propeller profile data format and add a pass to read the profile, storing the mapping between MachineBlock hash values and execution frequencies.
Patch 3: Introduce Matching and Inference techniques to obtain the execution frequencies of all MachineBlocks, generate cluster information for MachineFunction, and use the profile in lld to generate symbol sorting.