Typedef for condition variable
Always start process loop with NULL event
PluginParameterSet ctor waits on async thread start

Construction must occur synchronously, this class must guarantee that
it is ready to process data on either thread before returning.
Otherwise, unexpected behavior can occur if parameter changes or
destruction occurs directly after instantiation.
Remove MultithreadedTest file

Tests will be in the regular suite, no need for a new file
Fix incorrect test logic
Field must be volatile
Introduce new class: ThreadsafePluginParameterSet
Clean up test suite a bit

Mock observers renamed, properly constructed. Also added a basic
sanity check test case. Testing macros also improved, error messages
are printed out for all failures.
Rename PluginParametersTests to _Tests

Having this friend class is needed because when ENABLE_MULTITHREADED
is true, then setters of PluginParameter methods are no longer public.
So to keep these tests mostly the same for both versions of
PluginParameters, we allow access to protected methods via a friend
class, which is enabled by the preprocessor when building the test
suite.
Add basic multithreaded tests
Discourage scheduling events directly after construction

It is extremely difficult to ensure that the async thread is actually
waiting on the condition variable when notify() is sent. Actually it's
rather easy to ensure this, however that solution would involve a
mutex around scheduleEvent(), which could result in priority
inversion.

For this reason, the complex (and not-completely working) guarantee of
synchronous construction is removed, as it cannot be delivered.
Disable a test in multithreaded mode
Events always dispatched to realtime thread

Although it would be nice to immediately alert observers on the same
thread before re-dispatching, this unfortunately will not work in the
case of events sent by the async thread. This is because the event's
apply() method is *only* called by the main thread, which is a hard
requirement or else multiple events for the same parameter could cause
the final value to be incorrect.

In this change, async events now dispatch to the realtime thread right
away. In the realtime thread, the priority is always inverted and the
event is re-dispatched right away.
Test suite passes in both single/multithreaded configuration
Turn off multithreading by default
Add documentation for multithreaded usage
Provide ability to set scaled parameter values
Forward submodule to latest stable commit