In order to implement -time-passes functionality we need to be able to pause
PassManager's own timer when starting execution (and timer) for nested passes.
For that we need to be able to track which PassManager is currently being executed.
Adding startPassManager/endPassManager points to PassInstrumentation and call them
in all the pass managers/pass adaptors. Also adding startIteration point for
repeating adaptors (e.g RepeatPass) since that was pretty much the only
remaining piece of nontrivial pass execution tracking we were lacking
(albeit not needed for -time-passes).
Introducing PassExecutionLocation which improves PassExecutionCounter with
a value of currently-active pass manager instance. All the callbacks now
Majority of the changes are rather mechanical ones.