Add missing include
Change thread pool implementation.

First, there is only one thread pool now implemented as singleton. Every part
of Osmium that needs worker threads uses this single pool.
Second, we are using a function_wrapper helper class to wrap the tasks in
the worker queue. Unlike the std::function used before, the function_wrapper
is movable. We use packaged_tasks to allow return values given back with
futures (which are not used yet in this commit).
Use futures returned by worker queue submit to get results.
thread pool cleanup
Remove num_threads from PBFInput and use bool use_thread_pool instead
Add function to set thread name on linux for debugging.
Put actual writing of output to fd into it's own thread.

This thread can later also do compression. The OPL output was changed to use
the new format, XML and PBF writer still need to be changed.
Use new FileOutput in PBF writer.
Use new FileOutput in XML writer.
Add missing includes
Make OPL output multithreaded.

Each buffer is now converted to the OPL format by itself using the worker
thread pool.
Change the way coordinates are written to strings.

A ".0" at the end is removed.
XML output redone.

This changes the XML writer to run in several threads using the worker
thread pool.
This also removes the dependency on libxml2 for XML output. The XML is written
"manually". There are only a few places where we need to escape data and
we only deal with UTF-8 data and we only write UTF-8 encoded files anyway,
so this is easy to do.
Make sure we don't queue too much
Put objects local to store_blob functions in there.
Move zlib compression helper function out of PBFOutput class
Move store_blob function out of PBFOutput
Move zlib compression into it's own file
Simplify zlib_compress function by using a zlib helper function
Cleanup store_blob() and rename to serialize_blob()