Add a perms_dcp() copy_from body

This will add a new copy_from body to copy a local file if it is different from the existing copy and preserve file permissions on the local copy.

This can be used as a potential workaround for the issue that is documented in https://dev.cfengine.com/issues/2256