Optimize CPUTimer so we can check the walltime without reading out
the CPU time.
Introduce the concept of "graceful runtime".  After a fixed amount
of walltime, the input source sends a stop signal on lumi transitions.

This allows us to set an expiration time, after which, the framework exits
successfully after the current lumi is finished.  We plan to experiment
with having the workflow management system keeping the current job
outputs and create a new job consisting solely of the unprocessed
lumis as a means of "chopping off the tail" and giving us more
deterministic runtime.
Fixes from review comments.  Biggest change is that we use C++11
standard library for timer-related functions.
As suggested, rename maxGracefulRuntime to maxSecondsUntilRampdown.
Fix build issues for callsites that create InputSources directly.
Another missed constructor found thanks to checkdeps.
Merge pull request #4742 from bbockelm/graceful_runtime

"Graceful runtime" for managing job runtime when lumi splitting