Fix `utils.copy` for copying files, add unit tests

`copy('', 'a/b.ext0', 'c/d.ext1')` is copying `a/b.ext0` into `c/d.ext1/b.ext0`
(creating folder `c/d.ext1` in the process) instead of `c/d.ext1`.
Bug introduced by e03cf3f51735d5387fee7064cae89aaa1d34a0a6.
Simplify usage of `utils.copy`

Remove confusing parameters, clarify usage in __doc__