In cases where it makes sense, use calloc() instead of malloc():
* When allocating large objects with many members, many for which
NULL/0 is a good default value.
* Arrays etc where we explicitly initialize to NULL anyway.
If a particle has an on-click handler, execute it when we receive an
ON_MOUSE_CLICK event.
This is done by first tokenizing the command string. We currently
handle one level of quotes, but no escape characters.
Then, fork(). Main process waits for child to finish. Child daemonizes
and then execvp() the tokenized argument vector.
This is intended to be a format-like string, with the possibility to
use tag formatters.
The expanded string will later be passed to the system() call.