Make function static to avoid duped linker symbols
Move DIY test framework to separate header
Add multithreaded test suite
Run multithreaded tests, count all failures
PluginParameter::set now protected

This method can't be exposed to outside callers, otherwise the temptation to
misuse it will wreak havoc in a multithreaded environment.
Prefer NULL over nullptr

Yeah, I like C++11 too, but most IDEs underline nullptr as bad syntax
Make these methods virtual
Fix order of instantiation with thread/dispatchers

The thread must always be initialized LAST, or else it will start to operate
on the event dispatchers which have not finished being constructed yet.
Join async thread when parameter set is destroyed
Move method to better place in code
Add basic multithreading test observers
Test suite can access private parameter methods

Most of the actual parameter tests don't even involve a parameter set, so
calling setters for parameters is of no harm in these cases. However, rather
than exposing some variant of the set function, the test runner is now a
friend class of the parameter (ugh @ friend classes, but it works).
Should not use RAII when allocating parameters
More logical logic here