Failover hosts on uploading and downloading

Hi, this is related to #4.

I'm creating a PR instead of pushing directly so it can be reviewed, as there are some breaking changes.

Namely, the return values for `download_from_host`, `upload_to_host`, `download` and `multiupload` have changed, so this might impact external users of the API (haven't looked into this yet). This was done in order to standardize the return values for these public methods and be able to reuse some common code.

Let me know.

Ivan