##### SUMMARY
Compatibility of `ansible-galaxy collection download` with collections from source control is unclear, but attempting it gives a traceback.

##### ISSUE TYPE
- Bug Report

##### COMPONENT NAME
lib/ansible/cli/galaxy.py

##### ANSIBLE VERSION
```
ansible --version
[WARNING]: You are running the development version of Ansible. You should only run Ansible from "devel" if you are modifying the Ansible engine, or trying out features under
development. This is a rapidly changing source of code and can become unstable at any point.
ansible 2.11.0.dev0
  config file = None
  configured module search path = ['/Users/alancoding/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /Users/alancoding/Documents/repos/ansible/lib/ansible
  ansible collection location = /Users/alancoding/.ansible/collections:/usr/share/ansible/collections
  executable location = /Users/alancoding/.virtualenvs/ansible-builder_test/bin/ansible
  python version = 3.7.7 (default, Mar 10 2020, 15:43:03) [Clang 11.0.0 (clang-1100.0.33.17)]
```

##### CONFIGURATION
defaults

##### OS / ENVIRONMENT
N/A


##### STEPS TO REPRODUCE
Run the command

```
ansible-galaxy collection install -r examples/pytz/requirements.yml -p target/
```

Where the requirements file `examples/pytz/requirements.yml` contains the contents

```yaml
collections:
  - name: https://github.com/AlanCoding/awx.git#awx_collection,ee_req
    type: git  
```

##### EXPECTED RESULTS
Well, I expect it to be documented clearly one way or the other.

I would _like_ for this to work. Why? Because what it installs isn't the same as what source control gave. There is a `galaxy.yml` file checked into source control in my branch. However, if I run the `ansible-galaxy collection install`, it has a `MANIFEST.json` file and no `galaxy.yml`. This suggests that there was some intermediary step, where it built and then installed the collection.

Given that speculation, I would expect that the download command will give me the `tar.gz` file which can reproduce the files that the install command gave me.

##### ACTUAL RESULTS
```
$ ansible-galaxy collection download -r examples/pytz/requirements.yml -p target -vvv
[WARNING]: You are running the development version of Ansible. You should only run Ansible from "devel" if you are modifying the Ansible engine, or trying out features under
development. This is a rapidly changing source of code and can become unstable at any point.
ansible-galaxy 2.11.0.dev0
  config file = None
  configured module search path = ['/Users/alancoding/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /Users/alancoding/Documents/repos/ansible/lib/ansible
  ansible collection location = /Users/alancoding/.ansible/collections:/usr/share/ansible/collections
  executable location = /Users/alancoding/.virtualenvs/ansible-builder_test/bin/ansible-galaxy
  python version = 3.7.7 (default, Mar 10 2020, 15:43:03) [Clang 11.0.0 (clang-1100.0.33.17)]
No config file found; using defaults
Reading requirement file at '/Users/alancoding/Documents/repos/ansible-builder/examples/pytz/requirements.yml'
Process install dependency map
Processing requirement collection 'https://github.com/AlanCoding/awx.git#awx_collection,ee_req'
archiving ['/usr/local/bin/git', 'archive', '--prefix=awx/', '--output=/Users/alancoding/.ansible/tmp/ansible-local-72180s78cry9f/tmpxdfhelr6.tar', 'ee_req']
Skipping '/Users/alancoding/.ansible/tmp/ansible-local-72180s78cry9f/tmpj90wrb1h/awx/awx_collection/tools' for collection build
Skipping '/Users/alancoding/.ansible/tmp/ansible-local-72180s78cry9f/tmpj90wrb1h/awx/awx_collection/setup.cfg' for collection build
Skipping '/Users/alancoding/.ansible/tmp/ansible-local-72180s78cry9f/tmpj90wrb1h/awx/awx_collection/galaxy.yml' for collection build
Starting collection download process to '/Users/alancoding/Documents/repos/ansible-builder/target'
Downloading collection 'awx.awx' to '/Users/alancoding/Documents/repos/ansible-builder/target/awx-awx-0.0.1-devel.tar.gz'
ERROR! Unexpected Exception, this is probably a bug: 'NoneType' object has no attribute '_add_auth_token'
the full traceback was:

Traceback (most recent call last):
  File "/Users/alancoding/Documents/repos/ansible/bin/ansible-galaxy", line 125, in <module>
    exit_code = cli.run()
  File "/Users/alancoding/Documents/repos/ansible/lib/ansible/cli/galaxy.py", line 498, in run
    context.CLIARGS['func']()
  File "/Users/alancoding/Documents/repos/ansible/lib/ansible/cli/galaxy.py", line 789, in execute_download
    context.CLIARGS['allow_pre_release'])
  File "/Users/alancoding/Documents/repos/ansible/lib/ansible/galaxy/collection.py", line 607, in download_collections
    b_temp_download_path = requirement.download(b_temp_path)
  File "/Users/alancoding/Documents/repos/ansible/lib/ansible/galaxy/collection.py", line 226, in download
    self.api._add_auth_token(headers, download_url, required=False)
AttributeError: 'NoneType' object has no attribute '_add_auth_token'
```

if not os.path.isdir(b_dir_path):
            os.mkdir(b_dir_path, 0o0755)
def _extract_tar_file(tar, filename, b_dest, b_temp_path, expected_hash=None):
    """ Extracts a file from a collection tar. """
    with _get_tar_file_member(tar, filename) as (tar_member, tar_obj):
        if tar_member.type == tarfile.SYMTYPE:
            actual_hash = _consume_file(tar_obj)
        else:
            with tempfile.NamedTemporaryFile(dir=b_temp_path, delete=False) as tmpfile_obj:
                actual_hash = _consume_file(tar_obj, tmpfile_obj)
        if expected_hash and actual_hash != expected_hash:
            raise AnsibleError("Checksum mismatch for '%s' inside collection at '%s'"
                               % (to_native(filename, errors='surrogate_or_strict'), to_native(tar.name)))
        b_dest_filepath = os.path.abspath(os.path.join(b_dest, to_bytes(filename, errors='surrogate_or_strict')))
        b_parent_dir = os.path.dirname(b_dest_filepath)
        if not _is_child_path(b_parent_dir, b_dest):
            raise AnsibleError("Cannot extract tar entry '%s' as it will be placed outside the collection directory"
                               % to_native(filename, errors='surrogate_or_strict'))
        if not os.path.exists(b_parent_dir):
            
            
            os.makedirs(b_parent_dir, mode=0o0755)
        if tar_member.type == tarfile.SYMTYPE:
            b_link_path = to_bytes(tar_member.linkname, errors='surrogate_or_strict')
            if not _is_child_path(b_link_path, b_dest, link_name=b_dest_filepath):
                raise AnsibleError("Cannot extract symlink '%s' in collection: path points to location outside of "
                                   "collection '%s'" % (to_native(filename), b_link_path))
            os.symlink(b_link_path, b_dest_filepath)
        else:
            shutil.move(to_bytes(tmpfile_obj.name, errors='surrogate_or_strict'), b_dest_filepath)