[[ feature-sendonidle ]] Add "send ... when idle" syntax.
[[ feature-sendonidle ]] Queue idle priority messages with +Inf dispatch timer.
[[ feature-sendonidle ]] Dispatch idle priority messages iff nothing else to do.
[[ feature-sendonidle ]] Allocate message ID in doaddmessage().

Only mess about with the message ID in one place.  This means that we
can more easily handle de-duplication of queued messages later, if
necessary.
[[ feature-sendonidle ]] Only use message ID returned by MCUIDC::doaddmessage().

Previously, when returning the message ID to user code, we just pulled
the value MCUIDC::messageid, on the assumption that a new message ID
will always be allocated.

In the future this won't be true, so always use the message ID
returned by doaddmessage().
[[ feature-sendonidle ]] Don't allow duplicate idle priority messages.

If an idle message is scheduled, search for matching messages already
in the queue.  If one already exists, update parameters of the message
that's already queued and return its ID.