<!--- 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
When trying to use the `nios_host_record` module using a nested `vaulted` variable for the password breaks with the follwing error:

```
fatal: [localhost]: FAILED! => {
    "msg": "Unable to pass options to module, they must be JSON serializable: Object of type AnsibleVaultEncryptedUnicode is not JSON serializable"
}
```

##### ISSUE TYPE
- Bug Report

##### COMPONENT NAME
<!--- Write the short name of the module, plugin, task or feature below, use your best guess if unsure -->

nios_host_record

##### ANSIBLE VERSION
<!--- Paste verbatim output from "ansible --version" between quotes -->
```paste below
ansible 2.9.6
  config file = /home/florian/code/test/ansible.cfg
  configured module search path = ['/home/florian/code/test/library', '/home/florian/code/test/roles/kubespray/library']
  ansible python module location = /home/florian/.local/share/virtualenvs/test-y4iIM3Df/lib/python3.7/site-packages/ansible
  executable location = /home/florian/.local/share/virtualenvs/test-y4iIM3Df/bin/ansible
  python version = 3.7.6 (default, Jan 30 2020, 09:44:41) [GCC 9.2.1 20190827 (Red Hat 9.2.1-1)]
```

##### CONFIGURATION
<!--- Paste verbatim output from "ansible-config dump --only-changed" between quotes -->
```paste below
DEFAULT_JINJA2_NATIVE(/home/florian/code/test/ansible.cfg) = True
DEFAULT_MODULE_PATH(/home/florian/code/test/ansible.cfg) = ['/home/florian/code/test/library', '/home/florian/code/test/roles/kubespray/library']
DEFAULT_ROLES_PATH(/home/florian/code/test/ansible.cfg) = ['/home/florian/code/test/roles', '/home/florian/code/test/roles/kubespray/roles']
```

##### OS / ENVIRONMENT
<!--- Provide all relevant information below, e.g. target OS versions, network device firmware, etc. -->
```
NAME=Fedora
VERSION="31 (Workstation Edition)"
ID=fedora
VERSION_ID=31
VERSION_CODENAME=""
PLATFORM_ID="platform:f31"
PRETTY_NAME="Fedora 31 (Workstation Edition)"
ANSI_COLOR="0;34"
LOGO=fedora-logo-icon
CPE_NAME="cpe:/o:fedoraproject:fedora:31"
HOME_URL="https://fedoraproject.org/"
DOCUMENTATION_URL="https://docs.fedoraproject.org/en-US/fedora/f31/system-administrators-guide/"
SUPPORT_URL="https://fedoraproject.org/wiki/Communicating_and_getting_help"
BUG_REPORT_URL="https://bugzilla.redhat.com/"
REDHAT_BUGZILLA_PRODUCT="Fedora"
REDHAT_BUGZILLA_PRODUCT_VERSION=31
REDHAT_SUPPORT_PRODUCT="Fedora"
REDHAT_SUPPORT_PRODUCT_VERSION=31
PRIVACY_POLICY_URL="https://fedoraproject.org/wiki/Legal:PrivacyPolicy"
VARIANT="Workstation Edition"
VARIANT_ID=workstation
```

Infoblox client version:

```
pipenv run python -c 'import infoblox_client; print(infoblox_client.__version__)'
0.4.25
```

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

Attempt to pass the configuration of `nios_provider` as a dictionary to the [`nios_host_record`](https://docs.ansible.com/ansible/latest/modules/nios_host_record_module.html) module.

The variable `password` is stored nested:

```yaml
nios_provider:
  host: "host"
  username: "user"
  password: ! vault |
          <vault_here>
```

It is passed to the `nios_host_record` as a `dictionary`:

```yaml
- hosts: localhost
  tasks:
    - name: Remove a hostrecord from infoblox
      nios_host_record:
        name: "my-hostrecord.local"
        ipv4addrs:
          - ipv4addr:
              "192.168.1.120"
        state: absent
        provider: "{{ nios_provider }}"

```

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

##### EXPECTED RESULTS
<!--- Describe what you expected to happen when running the steps above -->

Passing a variable with nested vaulted variable should work and not break the module.

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

<!--- Paste verbatim command output between quotes -->

```
TASK [Remove a hostrecord from infoblox] *************************************
fatal: [localhost]: FAILED! => {"msg": "Unable to pass options to module, they must be JSON serializable: Object of type AnsibleVaultEncryptedUnicode is not JSON serializable"}
```
if not os.path.exists(path):
        raise AnsibleError("imported module support code does not exist at %s" % os.path.abspath(path))
    with open(path, 'rb') as fd:
        data = fd.read()
    return data
def _get_shebang(interpreter, task_vars, templar, args=tuple()):
    """
    Note not stellar API:
       Returns None instead of always returning a shebang line.  Doing it this
       way allows the caller to decide to use the shebang it read from the
       file rather than trust that we reformatted what they already have
       correctly.
    """