Handle API messages for voices that have not yet been instantiated

The implementation is based on the new A2_TNEWVOICE handle type.
A "newvoice" is not really an object, but rather a handle that
itself is used as an event queue for further messages, until an
actual voice is instantiated. This way we have an easy way of
storing events, as well as an efficient way for their target
objects to locate them eventually.

Fixed (unlikely) a2_add_xic() client handle leak if a2_writemsg()
should fail.

It should now be safe to release xinsert clients that were never
inserted. (a2_XinsertRemoveClient().) This should cover xinsert
hosting voices being killed early.

Fixed voice handle leak when A2MT_START fails. Also flushing the
A2_TNEWVOICE event queue when this happens.

The engine message pump now simply forwards most events to their
destinations, which means less code, fewer special cases, correct
timing for KILL and KILLSUB events, and the reason this had to be
done right now: proper handling of the new A2_TNEWVOICE handles.

a2_WhenAllHaveProcessed() now checks for FIFOs on the states, and
calls the callback directly if no functional states are available.

Closes #117.