copy: simplify inner copy
- save dirstate lookup and exists check
- do all fs work inside a single dryrun clause
- move unlinking into inner copy section
- move target dir creation
- eliminate undelete mess
- fix a bug on mv a -> b -> a after merge
copy: refactor okaytocopy into walkpat
- rename core copy function to copyfile
- move origsrc details into copyfile
- turn okaytocopy loop into walkpat
copy: fix copying back with -A (
issue836)