Download the given URL with wget to the provided path. The command is
    run via Fabric on the current remote machine. Therefore, the destination
    path should be for the remote machine.

    :param str url: URL to download onto the remote machine
    :param str destination: Path to download the URL to on the remote
        machine
    :param int retries: Max number of times to retry downloads after a failure
    :param float retry_delay: Number of seconds between download retries
    :param FabRunner runner: Optional runner to use for executing commands.
    :return: The results of the wget call

def download_url(url, destination, retries=None, retry_delay=None, runner=None):
    """Download the given URL with wget to the provided path. The command is
    run via Fabric on the current remote machine. Therefore, the destination
    path should be for the remote machine.

    :param str url: URL to download onto the remote machine
    :param str destination: Path to download the URL to on the remote
        machine
    :param int retries: Max number of times to retry downloads after a failure
    :param float retry_delay: Number of seconds between download retries
    :param FabRunner runner: Optional runner to use for executing commands.
    :return: The results of the wget call
    """
    runner = runner if runner is not None else FabRunner()
    return try_repeatedly(
        lambda: runner.run("wget --quiet --output-document '{0}' '{1}'".format(destination, url)),
        max_retries=retries,
        delay=retry_delay
    )