util/PeriodicScheduler: switched to threadless action-invocation method

i.e. the slot no longer creates a new thread to handle all actions at each
timer expiry event; it instead delegates action invocation to the
`io_service` by registering an asynchronous wait for each action and
allowing the `io_service` to invoke the actions as appropriate.