Change CopySpecContentVisitor to use functions instead of being a stateful visitor.

This reduces the margin of error and reduces the temptation to hold on to state when it's no longer needed.

A following change will improve the names to reflect the new approach.
Rename the CopySpecContentVisitor type to CopyAction.
Improve FileCopier to be stateless.
Remove redundant tests.
Inline CopySpecWalker.
Unit test for CopyActionExecuter.