Synchronize on the 'out' PrintStream instead of 'this' to avoid mixing
up log statements from different threads. Example from actual log file:

DEBUG	DEBUG	2014-06-02 08:48:46	IlluminaBasecallsConverter	Reading data
from tile 11206 ...
2014-06-02 08:48:46	IlluminaDataProviderFactory	The following parsers
will be used by IlluminaDataProvider:
Use a StringBuffer instead of synchronization when generating log
messages. The only exception is if the stacktrace of a Throwable also
needs to be written. Then we have to ensure that our message goes with
the stacktrace so we need synchronization there. But this should not be
a drawback since the Throwable.printStackTrace() itself synchronizes on
the PrintStream.
Merge pull request #30 from nnordborg/synchronize-log

The logging implementation is not thread-safe