Remove all synchronization from OutputFormats

I am removing all synchronization from the OutputFormat stuff because of the following reasons:

* In any case we will need to use Apache Spark in a single-threaded manner with 1 thread per worker (and 1 worker per core so that we can still use the cores) because Hadoop's bz2 InputStream - `CBzip2InputStream` is not thread-safe. There's a [JIRA on that](https://issues.apache.org/jira/browse/HADOOP-10614) that is fixed and merged to trunk. At least until Hadoop's next version this stays as it is.

* We are already guaranteeing single-threaded execution, so needless synchronization will simply cause problems.
We are currently not having multiple threads access these methods, so we should be safe in any case.

But, let's say that Hadoop releases its new version with a thread-safe Bz2 decompression stream that lets users have the choice of having multiple threads per worker (JVM): in such a case we will need to synchronize access to the whole write() and close() methods, not just the `Map`.

And you might ask: Why not create the whole map of `RecordWriters` right when the class initializes? Doing it lazily prevents us from having too many `RecordWriter` instances. For each input split (can be hundreds of them, maybe a few thousands too?) the map of `RecordWriter`s is initialized. This will cause even `RecordWriter`s for unneeded datasets (which have no Quads coming in) to be created too - extra instances, additional GC.