Added util/ScheduledAction: simple single-activation timer utility

  ScheduledAction is intended for use with (and must be instantiated
  by) a PeriodicScheduler instance.  PeriodicScheduler (which will be
  renamed to Scheduler in a forthcoming commit) provides an instance
  method "set_timer", which (as its name suggests) runs a user
  callback after a specified duration.

  The user callback is passed a reference to the ScheduledAction that
  invoked it; using that reference, the action may be set for another
  run via the `reset(Duration)` or `reset(TimePoint)` methods, or
  canceled via the `cancel()` method.

  Once canceled, a ScheduledAction instance is removed from its parent
  scheduler and any references to it are invalidated.  Note that the
  action will automatically remove itself if the user callback does not
  reset its timer.
util/PeriodicAction: better doc-comment on `cancel()`