<!--- 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

Recursively copying changed directories does not work if the changes are deeper than one directory level. If contents the top-level src directory appears unchanged, the whole directory appears unchanged.

##### ISSUE TYPE
- Bug Report

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

copy

##### ANSIBLE VERSION
<!--- Paste verbatim output from "ansible --version" between quotes -->
```paste below
ansible 2.8.1
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/home/akorsunsky/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3.7/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 3.7.3 (default, May 11 2019, 00:38:04) [GCC 9.1.1 20190503 (Red Hat 9.1.1-1)]
```

##### CONFIGURATION
<!--- Paste verbatim output from "ansible-config dump --only-changed" between quotes -->
```paste below
ANSIBLE_PIPELINING(/etc/ansible/ansible.cfg) = True
INTERPRETER_PYTHON(/etc/ansible/ansible.cfg) = auto
```

##### OS / ENVIRONMENT
<!--- Provide all relevant information below, e.g. target OS versions, network device firmware, etc. -->

- Distribution: Fedora 30, 64 Bit
- Python: 3.7.3 (default, May 11 2019, 00:38:04) [GCC 9.1.1 20190503 (Red Hat 9.1.1-1)]
- `uname -a`: Linux localhost 5.1.9-300.fc30.x86_64 #1 SMP Tue Jun 11 16:17:54 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux


##### STEPS TO REPRODUCE

<!--- Paste example playbooks or commands between quotes below -->
```bash
mkdir -p /tmp/src/a/b/ /tmp/dest/a/b/
touch /tmp/src/a/b/newfile
ansible localhost -m copy -a "src=/tmp/src/ dest=/tmp/dest/ remote_src=yes"
```

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

##### EXPECTED RESULTS
<!--- Describe what you expected to happen when running the steps above -->
`/tmp/src/a/b/newfile` copied to `/tmp/dest/a/b/newfile`, task marked as changed.

##### ACTUAL RESULTS
`/tmp/dest/a/b/newfile` does not exist. Task marked as not changed.

<!--- Paste verbatim command output between quotes -->
```paste below
localhost | SUCCESS => {
    "changed": false,
    "checksum": null,
    "dest": "/tmp/dest/",
    "gid": 1269600003,
    "group": "akorsunsky",
    "md5sum": null,
    "mode": "0775",
    "owner": "akorsunsky",
    "size": 60,
    "src": "/tmp/src/",
    "state": "directory",
    "uid": 1269600003
}
```

group_changed = (os.stat(file).st_gid != gid)
                    if group_changed is True:
                        changed = group_changed
    return changed
def copy_diff_files(src, dest, module):
    changed = False
    owner = module.params['owner']
    group = module.params['group']
    local_follow = module.params['local_follow']
    diff_files = filecmp.dircmp(src, dest).diff_files
    if len(diff_files):
        changed = True
    if not module.check_mode:
        for item in diff_files:
            src_item_path = os.path.join(src, item)
            dest_item_path = os.path.join(dest, item)
            b_src_item_path = to_bytes(src_item_path, errors='surrogate_or_strict')
            b_dest_item_path = to_bytes(dest_item_path, errors='surrogate_or_strict')
            if os.path.islink(b_src_item_path) and local_follow is False:
                linkto = os.readlink(b_src_item_path)
                os.symlink(linkto, b_dest_item_path)
            else:
                shutil.copyfile(b_src_item_path, b_dest_item_path)
            if owner is not None:
                module.set_owner_if_different(b_dest_item_path, owner, False)
            if group is not None:
                module.set_group_if_different(b_dest_item_path, group, False)
            changed = True
    return changed
def copy_left_only(src, dest, module):