util/Scheduler & related: fix possible data race in Scheduler + children

Added a data-access mutex in `Scheduler` to ensure strict ordering of
accesses to its data members; also rerouted `cancel` method on
`PeriodicAction` to go through the owning Scheduler (like
`ScheduledAction`) rather than directly via the intermediary
schedule slot.
util/PeriodicScheduleSlot: some misc. formatting/comment changes
(build) CMakeLists.txt: enabled better message if Boost not available

The "REQUIRED" tag in `find_package` was preventing CMake from evaluating
anything after that call when any Boost component was unavailable.

I've also improved the message itself.