Indenting
Subclass Event to create StringEvent

This will make it possible to have a unified interface for setting events,
regardless of the type of data they should contain. Template classes are
perhaps a better solution, but one that I don't want to implement right away
since C++ templates are somewhat cumbersome IMHO.
Event should set parameter value itself

This allows Event to be subclassed to possibly call methods other than the
standard setValue(). Again, templates might make this redundant.
Typedefs for mutex/lock guard types
Prefer old-fashioned NULL to nullptr
Fix synchronization issues during destruction

Specifically, this fixes the shutdown procedure so that the async thread can
exit cleanly. Without the lock guard around the mutex, it was possible for
threads to leak since they were never joined properly.
Synchronous processing of realtime dispatcher

This must be called from the audio thread in order for the entire architecture
to work properly.
Add method to set string parameters in a set

Should disappear with templating
Wake async dispatcher when event is scheduled
Bump readerwriterqueue submodule

Includes a fix that prevents crashing when attempting to dequeue an empty
queue.
Fix observer test cases

Test suite is passing again! However I've noticed a few random exceptions
being thrown here and there, it seems that there are probably still some
synchronization bugs.