##### SUMMARY
If a dependency of my collection uses a specific syntax in its `galaxy.yml` then it will break installs of my own collection.

##### ISSUE TYPE
- Bug Report

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

##### ANSIBLE VERSION
```paste below
$ ansible --version
ansible 2.10.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
  executable location = /Users/alancoding/.virtualenvs/ansible3/bin/ansible
  python version = 3.6.5 (default, Apr 25 2018, 14:23:58) [GCC 4.2.1 Compatible Apple LLVM 9.1.0 (clang-902.0.39.1)]
```

##### CONFIGURATION
defaults

##### OS / ENVIRONMENT
N/A


##### STEPS TO REPRODUCE
Create a collection like this:

```yaml
namespace: alancoding
name: bug
version: 0.0.1
readme: README.md
authors:
- Alan Rominger <alan.rominger@gmail.com>
description: A testing collection that depends on debops collection
license:
- GPL-2.0-or-later
license_file: ''
tags: []
dependencies:
  softasap.redis_box: "*"

repository: https://github.com/AlanCoding/collection-dependencies-demo
documentation: https://github.com/AlanCoding/collection-dependencies-demo
homepage: https://github.com/AlanCoding/collection-dependencies-demo
issues: http://example.com/issue/tracker
build_ignore:
- target
- output*.txt
- '*.tar.gz'
```

Now build and then install it.

```
repro_bug:
	rm -rf bug_debops/alancoding-bug-0.0.1.tar.gz
	ansible-galaxy collection build bug_debops --output-path=bug_debops -vvv
	ANSIBLE_COLLECTIONS_PATHS=bug_debops/target ansible-galaxy collection install bug_debops/alancoding-bug-0.0.1.tar.gz -f -p bug_debops/target -vvv
```

(ignore my folder name, originally I mis-attributed the error)

##### EXPECTED RESULTS
Installs. Nothing is wrong with this setup.


##### ACTUAL RESULTS

```paste below
$ make repro_bug
# rm -rf bug_debops/target
rm -rf bug_debops/alancoding-bug-0.0.1.tar.gz
ansible-galaxy collection build bug_debops --output-path=bug_debops -vvv
ansible-galaxy 2.10.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
  executable location = /Users/alancoding/.virtualenvs/ansible3/bin/ansible-galaxy
  python version = 3.6.5 (default, Apr 25 2018, 14:23:58) [GCC 4.2.1 Compatible Apple LLVM 9.1.0 (clang-902.0.39.1)]
No config file found; using defaults
Skipping '/Users/alancoding/Documents/repos/collection-dependencies-demo/bug_debops/target' for collection build
Skipping '/Users/alancoding/Documents/repos/collection-dependencies-demo/bug_debops/galaxy.yml' for collection build
Created collection for alancoding.bug at /Users/alancoding/Documents/repos/collection-dependencies-demo/bug_debops/alancoding-bug-0.0.1.tar.gz
ANSIBLE_COLLECTIONS_PATHS=bug_debops/target ansible-galaxy collection install bug_debops/alancoding-bug-0.0.1.tar.gz -f -p bug_debops/target -vvv
ansible-galaxy 2.10.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
  executable location = /Users/alancoding/.virtualenvs/ansible3/bin/ansible-galaxy
  python version = 3.6.5 (default, Apr 25 2018, 14:23:58) [GCC 4.2.1 Compatible Apple LLVM 9.1.0 (clang-902.0.39.1)]
No config file found; using defaults
Found installed collection gavinfish.azuretest:1.0.3 at '/Users/alancoding/Documents/repos/collection-dependencies-demo/bug_debops/target/ansible_collections/gavinfish/azuretest'
Found installed collection debops.roles03:2.0.1 at '/Users/alancoding/Documents/repos/collection-dependencies-demo/bug_debops/target/ansible_collections/debops/roles03'
Found installed collection debops.roles02:2.0.1 at '/Users/alancoding/Documents/repos/collection-dependencies-demo/bug_debops/target/ansible_collections/debops/roles02'
Found installed collection debops.debops:2.0.1 at '/Users/alancoding/Documents/repos/collection-dependencies-demo/bug_debops/target/ansible_collections/debops/debops'
Found installed collection debops.roles01:2.0.1 at '/Users/alancoding/Documents/repos/collection-dependencies-demo/bug_debops/target/ansible_collections/debops/roles01'
Found installed collection fragmentedpacket.netbox_modules:0.1.4 at '/Users/alancoding/Documents/repos/collection-dependencies-demo/bug_debops/target/ansible_collections/fragmentedpacket/netbox_modules'
Found installed collection alancoding.bug:0.0.1 at '/Users/alancoding/Documents/repos/collection-dependencies-demo/bug_debops/target/ansible_collections/alancoding/bug'
Found installed collection softasap.redis_box:0.1.0 at '/Users/alancoding/Documents/repos/collection-dependencies-demo/bug_debops/target/ansible_collections/softasap/redis_box'
Process install dependency map
Opened /Users/alancoding/.ansible/galaxy_token
Processing requirement collection 'bug_debops/alancoding-bug-0.0.1.tar.gz'
Processing requirement collection 'softasap.redis_box' - as dependency of alancoding.bug
Opened /Users/alancoding/.ansible/galaxy_token
Collection 'softasap.redis_box' obtained from server default https://galaxy.ansible.com/api/
ERROR! Unexpected Exception, this is probably a bug: object of type 'NoneType' has no len()
the full traceback was:

Traceback (most recent call last):
  File "/Users/alancoding/Documents/repos/ansible/bin/ansible-galaxy", line 123, in <module>
    exit_code = cli.run()
  File "/Users/alancoding/Documents/repos/ansible/lib/ansible/cli/galaxy.py", line 456, in run
    context.CLIARGS['func']()
  File "/Users/alancoding/Documents/repos/ansible/lib/ansible/cli/galaxy.py", line 944, in execute_install
    no_deps, force, force_deps)
  File "/Users/alancoding/Documents/repos/ansible/lib/ansible/galaxy/collection.py", line 511, in install_collections
    validate_certs, force, force_deps, no_deps)
  File "/Users/alancoding/Documents/repos/ansible/lib/ansible/galaxy/collection.py", line 955, in _build_dependency_map
    if no_deps or len(dependency_map[collection].dependencies) == 0:
TypeError: object of type 'NoneType' has no len()
make: *** [repro_bug] Error 250
```

It seems that the root of this issue is:

https://github.com/oops-to-devops/redis_box/blob/develop/galaxy.yml

```
cat bug_debops/target/ansible_collections/softasap/redis_box/MANIFEST.json
{
 "collection_info": {
  "description": "wraps sa-redis and installs redis server", 
  "repository": "https://github.com/oops-to-devops/redis_box", 
  "tags": [
   "softasap", 
   "redis"
  ], 
  "dependencies": null, 
  "authors": [
   "Vyacheslav Voronenko"
  ], 
  "issues": "https://github.com/orgs/oops-to-devops/projects/1", 
  "name": "redis_box", 
...
```

Corresponding to:

```yaml
namespace: "softasap"
name: "redis_box"
description: wraps sa-redis and installs redis server
version: 0.2.0
readme: "Readme.md"
authors:
    - "Vyacheslav Voronenko"
dependencies:
license:
    - "MIT"
tags:
    - softasap
    - redis
repository: "https://github.com/oops-to-devops/redis_box"
documentation: "https://github.com/oops-to-devops/mariadb_box/blob/master/README.md"
homepage: "https://www.softasap.com"
issues: "https://github.com/orgs/oops-to-devops/projects/1"
```

I have confirmed that I can build this collection locally.

So Galaxy shouldn't let me build a collection with this entry that errors the dependency processing, or it should handle this case.
if not tarfile.is_tarfile(b_path):
            raise AnsibleError("Collection artifact at '%s' is not a valid tar file." % to_native(b_path))
        info = {}
        with tarfile.open(b_path, mode='r') as collection_tar:
            for b_member_name, property_name in CollectionRequirement._FILE_MAPPING:
                n_member_name = to_native(b_member_name)
                try:
                    member = collection_tar.getmember(n_member_name)
                except KeyError:
                    raise AnsibleError("Collection at '%s' does not contain the required file %s."
                                       % (to_native(b_path), n_member_name))
                with _tarfile_extract(collection_tar, member) as member_obj:
                    try:
                        info[property_name] = json.loads(to_text(member_obj.read(), errors='surrogate_or_strict'))
                    except ValueError:
                        raise AnsibleError("Collection tar file member %s does not contain a valid json string."
                                           % n_member_name)
        meta = info['manifest_file']['collection_info']
        files = info['files_file']['files']
        namespace = meta['namespace']
        name = meta['name']
        version = meta['version']
        meta = CollectionVersionMetadata(namespace, name, version, None, None, meta['dependencies'])
        return CollectionRequirement(namespace, name, b_path, None, [version], version, force, parent=parent,
                                     metadata=meta, files=files)
    @staticmethod
    def from_path(b_path, force, parent=None):