Introduce the transfer manager

When we download something we do it synchronously on the main thread. We
don't want to do that since we want to be able to have downloads running
while we do something else; and even multiple downloads at the same
time.

We introduce the notion of a transfer manager. It keeps track of
transfers and is responsible for running them on a separate thread. To
do this we also introduce the Transfer class, which is a class all kinds
of transfers may inherit from. Currently we only do download, but it is
conceivable that uploads may be introduced in the future as well.

Signed-off-by: Marcus Karlsson <mk@acc.umu.se>
Show transfers in a window

We have no way to show which transfers we are running, or the status of
those transfers. Create a window where we show all transfers in a table,
with the name of the file and the current status of the transfer. Listen
to the signal_status_changed signal on all added transfers in order to
detect when data should be reloaded.

Signed-off-by: Marcus Karlsson <mk@acc.umu.se>