##### SUMMARY
As a nicety to the user, `ansible-galaxy collection` should check certain properties of the `collection_name` argument, and provide helpful suggestions about expected format.

##### ISSUE TYPE
- Feature Idea

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

##### ADDITIONAL INFORMATION
When getting this message, it's not clear to the user what they should do differently:

```yaml
$ ansible-galaxy collection install chrismeyersfsu_tower_modules -p alan -vvv
ansible-galaxy 2.9.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
Opened /Users/alancoding/.ansible_galaxy
 [WARNING]: The specified collections path '/Users/alancoding/Documents/repos/jlaska-ansible-playbooks/alan' is not part of the configured Ansible collections paths
'/Users/alancoding/.ansible/collections:/usr/share/ansible/collections'. The installed collection won't be picked up in an Ansible run.

Found installed collection chrismeyersfsu.tower_modules:0.0.1 at '/Users/alancoding/Documents/repos/jlaska-ansible-playbooks/alan/ansible_collections/chrismeyersfsu/tower_modules'
Processing requirement collection 'chrismeyersfsu_tower_modules'
ERROR! Unexpected Exception, this is probably a bug: not enough values to unpack (expected 2, got 1)
the full traceback was:

Traceback (most recent call last):
  File "/Users/alancoding/Documents/repos/ansible/bin/ansible-galaxy", line 111, in <module>
    exit_code = cli.run()
  File "/Users/alancoding/Documents/repos/ansible/lib/ansible/cli/galaxy.py", line 269, in run
    context.CLIARGS['func']()
  File "/Users/alancoding/Documents/repos/ansible/lib/ansible/cli/galaxy.py", line 617, in execute_install
    no_deps, force, force_deps)
  File "/Users/alancoding/Documents/repos/ansible/lib/ansible/galaxy/collection.py", line 450, in install_collections
    force, force_deps, no_deps)
  File "/Users/alancoding/Documents/repos/ansible/lib/ansible/galaxy/collection.py", line 831, in _build_dependency_map
    validate_certs, (force or force_deps))
  File "/Users/alancoding/Documents/repos/ansible/lib/ansible/galaxy/collection.py", line 898, in _get_collection_info
    parent=parent)
  File "/Users/alancoding/Documents/repos/ansible/lib/ansible/galaxy/collection.py", line 296, in from_name
    namespace, name = collection.split('.', 1)
ValueError: not enough values to unpack (expected 2, got 1)
```

Instead of `ValueError`, it would be better to give text like

> Improperly formatted collection name argument. Collection name must be of the format "username.collection_name", like "chrismeyersfsu.tower_modules"

import_parser.add_argument('--branch', dest='reference',
                                   help='The name of a branch to import. Defaults to the repository\'s default branch (usually master)')
        import_parser.add_argument('--role-name', dest='role_name', help='The name the role should have, if different than the repo name')
        import_parser.add_argument('--status', dest='check_status', action='store_true', default=False,
                                   help='Check the status of the most recent import request for given github_user/github_repo.')
        info_parser = role_parser.add_parser('info', help='View more details about a specific role.',
                                             parents=[offline, common, roles_path])
        info_parser.set_defaults(func=self.execute_info)
        info_parser.add_argument('args', nargs='+', help='role', metavar='role_name[,version]')
        rinit_parser = self.add_init_parser(role_parser, [offline, force, common])
        rinit_parser.add_argument('--type',
                                  dest='role_type',
                                  action='store',
                                  default='default',
                                  help="Initialize using an alternate role type. Valid types include: 'container', 'apb' and 'network'.")
        install_parser = role_parser.add_parser('install', help='Install Roles from file(s), URL(s) or tar file(s)',
                                                parents=[force, common, roles_path])
        install_parser.set_defaults(func=self.execute_install)
        install_parser.add_argument('-i', '--ignore-errors', dest='ignore_errors', action='store_true', default=False,
                                    help='Ignore errors and continue with the next specified role.')
        install_parser.add_argument('-r', '--role-file', dest='role_file', help='A file containing a list of roles to be imported')
        install_parser.add_argument('-g', '--keep-scm-meta', dest='keep_scm_meta', action='store_true',
                                    default=False, help='Use tar instead of the scm archive option when packaging the role')
        install_parser.add_argument('args', help='Role name, URL or tar file', metavar='role', nargs='*')
        install_exclusive = install_parser.add_mutually_exclusive_group()
        install_exclusive.add_argument('-n', '--no-deps', dest='no_deps', action='store_true', default=False,
                                       help="Don't download roles listed as dependencies")
        install_exclusive.add_argument('--force-with-deps', dest='force_with_deps', action='store_true', default=False,
                                       help="Force overwriting an existing role and it's dependencies")
        remove_parser = role_parser.add_parser('remove', help='Delete roles from roles_path.', parents=[common, roles_path])