Made MessageQueue time-based functions more generic

They now take any C++ standard library time points and durations.
Improved and fixed test macros

We need to assign the macro argument to a variable,
as if it is a function, it gets called every time we mention it.
Yay macros.
Pop-up state machine passes initial barrage of tests