DataArea: add new functions (then-based callbacks)

- void playSoundAndThen(std::string sound, ThenFn then);
- void timerProgress(time_t duration, ProgressFn progress);
- void timerThen(time_t duration, ThenFn then);
- void timerProgressAndThen(time_t duration, ProgressFn progress,
                            ThenFn then);

To make it happen, also create an InProgress object and subclasses.

Further, DataArea::onTick() now takes a (time_t dt) argument.
formatter: add formatter for bool
dataarea, inprogress: bug fixes

- DataArea wasn't removing InProgress objects when they were over.
- InProgressTimer didn't initialize `time_t passed` to 0.