thread_init() is no longer needed in Glib 2.32
WindowGtk3: Try to be more correct looking up completions async
WindowGtk3: Use close_async
Request: Use get_child_for_display_name
Downloader: Completely rewritten to be actually thread-safe.

Previously Glib::signal_io was being called on off the GMainLoop
thread, which isn't threadsafe and was possibly causing some random
crashes. Instead of using the curl multi interface, just give each
curl handle a managed thread of its own.

The interface was also rewritten to just download to a string rather
than incrementally write out a file. Instead, if the download
completes fine, the file is written out all at once. No more partial
completions should be possible.