<!--- Verify first that your feature was not already discussed on GitHub -->
<!--- Complete *all* sections as described, this form is processed automatically -->

##### SUMMARY
The [__combine__ filter of Ansible](https://docs.ansible.com/ansible/latest/user_guide/playbooks_filters.html#combining-hashes-dictionaries) is limited if it comes to nested elements that contain lists. The __recursive__ functionality only does merge dict elements but not nested list elements.
* The current implementation will simply take the second list as result.
* The expected results would be to merge both lists into a single list.

##### ISSUE TYPE
- Feature Idea

##### COMPONENT NAME
Jinjia2 integration

##### ADDITIONAL INFORMATION
Example:
```yaml
---
- hosts: localhost
  gather_facts: false
  vars:
    foo:
      list:
      - a
      - b
      dict:
        foo: 1
    bar:
      list:
      - c
      - d
      dict:
        bar: 2
  tasks:
  - debug:
      msg: '{{ {} | combine(foo, bar, recursive=True) }}'
```

Expected:
```yaml
{
  "dict": {
      "bar": 2,
      "foo": 1
  },
  "list": [
      "a",
      "b",
      "c",
      "d"
  ]
}
```
Actual:
```yaml
{
  "dict": {
      "bar": 2,
      "foo": 1
  },
  "list": [
      "c",
      "d"
  ]
}
```

),
        dict(
            a=defaultdict(a=1, c=dict(foo='bar')),
            b=dict(b=2, c=defaultdict(baz='bam')),
            result=defaultdict(a=1, b=2, c=defaultdict(baz='bam'))
        ),
    )
    def test_merge_hash(self):
        for test in self.test_merge_data:
            self.assertEqual(merge_hash(test['a'], test['b']), test['result'])
    def test_improper_args(self):
        with mock.patch('ansible.constants.DEFAULT_HASH_BEHAVIOUR', 'replace'):
            with self.assertRaises(AnsibleError):
                combine_vars([1, 2, 3], dict(a=1))
            with self.assertRaises(AnsibleError):
                combine_vars(dict(a=1), [1, 2, 3])
        with mock.patch('ansible.constants.DEFAULT_HASH_BEHAVIOUR', 'merge'):
            with self.assertRaises(AnsibleError):
                combine_vars([1, 2, 3], dict(a=1))
            with self.assertRaises(AnsibleError):
                combine_vars(dict(a=1), [1, 2, 3])
    def test_combine_vars_replace(self):
        with mock.patch('ansible.constants.DEFAULT_HASH_BEHAVIOUR', 'replace'):
            for test in self.test_replace_data:
                self.assertEqual(combine_vars(test['a'], test['b']), test['result'])
    def test_combine_vars_merge(self):
        with mock.patch('ansible.constants.DEFAULT_HASH_BEHAVIOUR', 'merge'):
            for test in self.test_merge_data:
                self.assertEqual(combine_vars(test['a'], test['b']), test['result'])