[XLA:MSA] Add a runtime simulator to predict the HLO module execution time for a given memory space assignment.
[XLA:MSA] Add a runtime simulator to predict the HLO module execution time for a given memory space assignment.

The runtime simulator takes into account the number of trip counts of outer loops when calculating the execution time of an instruction. This is important for nested loops, where the execution time of an instruction can be significantly affected by the number of times it is executed. Before this update, the existing simulator assumes all nested layers have the same trip count, which is a user-provided configuration (default: 5). 

This patch implements a new simulator which uses static analysis to get the trip count for each nested layer, and product them to get the total trip counts.
