Use C++11 constructs for CPUTimer

Needed move semantics to allow CPUTimer to be placed in containers.
Use SystemTimeKeeper to generate timing summary

In order to properly account for unscheduled execution, the summary timing is now done by SystemTimeKeeper. This way the summary can reuse the signals sent by the ActivityRegistry which includes the signals sent when an unscheduled execution is being triggered.
Only run one timer for module and module on path

Reuse the timing measurement made for a module when doing the time accounting for the time a module spends running on a particular path. This avoids having two separate timers running.
Removed old timing summary infrastructure

Removed the timing infrastructure which was previously used to generate the timing summary. This is no longer needed by the new way of getting the timing summary.
Merge pull request #4583 from Dr15Jones/makeSystemTimingCorrectWithUnscheduled

Make system timing correct with unscheduled execution