copy: Implement recursive copying if src is a directory.

If src param to copy is a directory, all files under it are collected
and pushed one by one to target. Source dir path handled in a way
simalar to rsync: if it ends with slash, only inside contents of
directory are copied to destination, otherwise the dir itself is
copied (with all contents of course). Original idea and implementation
by https://github.com/ansible/ansible/pull/1809 . Rewritten to address
review comments and simplify/correct logic.
copy: Don't modify input module_args in a recursive file handling loop.
copy: Set suitable default result for check mode.
copy: Handle dest path variations for recursive mode.
copy: Handle "no copy/propagate attrs only" for recursive mode well.

For this, add internal "original_basename" param to file module,
similar to copy module. (Param name is a bit misnormer now, should
be treated as "original basepath").
copy: Add testcase for recursive copy.
Merge pull request #4375 from pfalcon/ansible

copy: Implement recursive copying if src is a directory.