Making "pull" more resistant to invalid paths

If an invalid/untracked path was provided to "pull" it would fail and display an error message. This is mostly intended, but had the inconvenient side effect that any valid paths that were also provided would not be processed. This made it somewhat difficult to use things like shell globbing to select paths to pull, since you had to ensure that *every* path was valid.

This change fixes forEachSubtree to only error out on a per-path basis, so error messages are displayed for invalid paths while valid ones are processed.