Make `terrain-build` multithreaded

Tile generation now occurs cooperatively between threads.  The number
of threads can be specified using the `--thread-count` option.
Get the return value of a thread

Tiler threads are now instantiated using futures from a packaged_task,
allowing the return value of the tiler run to be captured and
reported.