<!--- Verify first that your issue is not already reported on GitHub -->
<!--- Also test if the latest release and devel branch are affected too -->
<!--- Complete *all* sections as described, this form is processed automatically -->

##### SUMMARY
I don't even know if this is worth fixing, but it did cause me an issue. 

`--extra-vars ' '` now throws an error when it never used to.  I'm essentially doing this in a script...

`--extra-vars "$extra_vars $vmware_restore"` which results in a space when both are empty.

`--extra-vars ''` with no space, works fine.

##### ISSUE TYPE
- Bug Report

##### COMPONENT NAME
ansible playbook

##### ANSIBLE VERSION
<!--- Paste verbatim output from "ansible --version" between quotes -->
```paste below
$ ansible --version
ansible 2.8.4
  config file = /home/trenta/Documents/development/java/cas/cas-overlay-template/ansible/ansible.cfg
  configured module search path = [u'/home/trenta/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/dist-packages/ansible
  executable location = /usr/bin/ansible
  python version = 2.7.12 (default, Nov 12 2018, 14:36:49) [GCC 5.4.0 20160609]
```

##### CONFIGURATION
<!--- Paste verbatim output from "ansible-config dump --only-changed" between quotes -->
```paste below
$ ansible-config dump --only-changed
ANSIBLE_NOCOWS(env: ANSIBLE_NOCOWS) = True
ANSIBLE_PIPELINING(/home/trenta/Documents/development/java/cas/cas-overlay-template/ansible/ansible.cfg) = True
ANSIBLE_SSH_ARGS(/home/trenta/Documents/development/java/cas/cas-overlay-template/ansible/ansible.cfg) = -o ControlMaster=auto -o ControlPersist=60s

```

##### OS / ENVIRONMENT
<!--- Provide all relevant information below, e.g. target OS versions, network device firmware, etc. -->
Likely not relevant, but I'm using Linux Mint 18.2.

##### STEPS TO REPRODUCE
<!--- Describe exactly how to reproduce the problem, using a minimal test-case -->

<!--- Paste example playbooks or commands between quotes below -->
```bash
# note the space in --extra-vars
ansible-playbook -i inventory --extra-vars ' ' -v site.yml --diff
```

<!--- HINT: You can paste gist.github.com links for larger files -->

##### EXPECTED RESULTS
<!--- Describe what you expected to happen when running the steps above -->
I expected the playbook to run, as it always has on previous versions of ansible.

##### ACTUAL RESULTS
<!--- Describe what actually happened. If possible run with extra verbosity (-vvvv) -->

<!--- Paste verbatim command output between quotes -->
```paste below
ansible-playbook 2.8.4
  config file = /home/trenta/Documents/development/java/cas/cas-overlay-template/ansible/ansible.cfg
  configured module search path = [u'/home/trenta/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/dist-packages/ansible
  executable location = /usr/bin/ansible-playbook
  python version = 2.7.12 (default, Nov 12 2018, 14:36:49) [GCC 5.4.0 20160609]
Using /home/trenta/Documents/development/java/cas/cas-overlay-template/ansible/ansible.cfg as config file
vault.sh: myname:   vault.sh
vault.sh: fullname: /home/trenta/Documents/development/java/cas/cas-overlay-template/ansible/vault.sh
vault.sh: dirname:  /home/trenta/Documents/development/java/cas/cas-overlay-template/ansible
vault.sh: project:  cas-5.2
vault.sh: file:     ansible-vault/dev-cas-5.2
vault.sh: password: host_list declined parsing /home/trenta/Documents/development/java/cas/cas-overlay-template/ansible/inventory as it did not pass it's verify_file() method
script declined parsing /home/trenta/Documents/development/java/cas/cas-overlay-template/ansible/inventory as it did not pass it's verify_file() method
auto declined parsing /home/trenta/Documents/development/java/cas/cas-overlay-template/ansible/inventory as it did not pass it's verify_file() method
Parsed /home/trenta/Documents/development/java/cas/cas-overlay-template/ansible/inventory inventory source with ini plugin
ERROR! Unexpected Exception, this is probably a bug: list index out of range
the full traceback was:

Traceback (most recent call last):
  File "/usr/bin/ansible-playbook", line 110, in <module>
    exit_code = cli.run()
  File "/usr/lib/python2.7/dist-packages/ansible/cli/playbook.py", line 104, in run
    loader, inventory, variable_manager = self._play_prereqs()
  File "/usr/lib/python2.7/dist-packages/ansible/cli/__init__.py", line 492, in _play_prereqs
    variable_manager = VariableManager(loader=loader, inventory=inventory, version_info=CLI.version_info(gitinfo=False))
  File "/usr/lib/python2.7/dist-packages/ansible/vars/manager.py", line 98, in __init__
    self._extra_vars = load_extra_vars(loader=self._loader)
  File "/usr/lib/python2.7/dist-packages/ansible/utils/vars.py", line 136, in load_extra_vars
    data = parse_kv(extra_vars_opt)
  File "/usr/lib/python2.7/dist-packages/ansible/parsing/splitter.py", line 62, in parse_kv
    vargs = split_args(args)
  File "/usr/lib/python2.7/dist-packages/ansible/parsing/splitter.py", line 206, in split_args
    params[-1] += ' '
```

was_inside_quotes = inside_quotes
            quote_char = _get_quote_state(token, quote_char)
            inside_quotes = quote_char is not None
            
            
            
            
            appended = False
            
            
            
            
            if inside_quotes and not was_inside_quotes and not (print_depth or block_depth or comment_depth):
                params.append(token)
                appended = True
            elif print_depth or block_depth or comment_depth or inside_quotes or was_inside_quotes:
                if idx == 0 and was_inside_quotes:
                    params[-1] = "%s%s" % (params[-1], token)
                elif len(tokens) > 1:
                    spacer = ''
                    if idx > 0:
                        spacer = ' '
                    params[-1] = "%s%s%s" % (params[-1], spacer, token)
                else:
                    params[-1] = "%s\n%s" % (params[-1], token)
                appended = True
            
            
            prev_print_depth = print_depth
            print_depth = _count_jinja2_blocks(token, print_depth, "{{", "}}")