In order to support different types of perf scripts, this change tried to refactor PerfReader by adding the base class PerfReaderBase and current HybridPerfReader is derived from it for CS profile generation. Common functions like, passMM2PEvents, extract_lbrs, extract_callstack, etc. can be reused.
Next step is to add LBR only reader(for non-CS profile) and aggregated perf scripts reader(do a pre-aggregation of scripts).
The function does more than disassembling, maybe name it LoadBinary and move it out of the ProfiledBinary class?