ConcurrentParameterSet blocks until thread started

It is still difficult to guarantee that there will be no concurrency
problems while starting the thread (see the WARNING) comment in the
asyncDispatcherCallback function for more details), but at least now
starting the thread can be done in a blocking fashion much more safely.
This also means that SLEEP_AFTER_CREATION_MS is no longer needed.
Update method documentation
setData() requires size, copies data

This seems a bit wasteful, but in fact is very crucial for avoiding
potential concurrency problems. Take for instance the following code:

function() {
  std::string foo("hello");
  parameterSet.setData("my parameter", foo.c_str());
  ...
}

The above code will schedule a new data event, however the string data
is no longer valid after the function returns. This memory can be
re-used by the system, and there is a possibility of a segfault when the
event is actually applied, which happens in another thread later on.

To be safe, we therefore copy the data to the event object, thus
guaranteeing that when the event is applied in the next call to
processRealtimeEvents() that it points to valid memory.
Add more multithreaded test cases

Also the test cases should build under Windows now (untested, though).