Make copy fail when source is empty

An odd combination of events can cause copy to have some strange
behaviour.

If `with_files_found` finds zero files, and copy is used under
a role with files or templates beneath (at most one file need
exist under either of those two), then the copy tries to
copy the entire data structure under `dest`.

Copy should fail when source is empty - and that should include
the empty string, not just the `None` sentinel.

Other approaches might include failing when `with_files_found`
finds zero files