Fixes #11966, clearer interface for files.copy

* adds recurse flag (required when copying directories)
* adds (merge|remove)_existing, to choose whether to keep existing files, or delete the target directory entirely.
modifying behaviour to reduce arguments
Merge pull request #11985 from toumorokoshi/specialCopy

Fixes #11966, clearer interface for files.copy