Make "ce_match_path()" a generic helper function

... and make git-diff-files use it too.  This all _should_ make the
diffcore-pathspec.c phase unnecessary, since the diff'ers now all do the
path matching early interally.
diff --git a/diff-files.c b/diff-files.c
index ebaf235..4e7d967 100644
--- a/diff-files.c
+++ b/diff-files.c
@@ -43,6 +43,7 @@
 int main(int argc, const char **argv)
 {
 	static const unsigned char null_sha1[20] = { 0, };
+	const char **pathspec;
 	int entries = read_cache();
 	int i;
 
@@ -95,6 +96,9 @@
 		argv++; argc--;
 	}
 
+	/* Do we have a pathspec? */
+	pathspec = (argc > 1) ? argv + 1 : NULL;
+
 	if (find_copies_harder && detect_rename != DIFF_DETECT_COPY)
 		usage(diff_files_usage);
 
@@ -114,6 +118,9 @@
 		struct cache_entry *ce = active_cache[i];
 		int changed;
 
+		if (!ce_path_match(ce, pathspec))
+			continue;
+
 		if (ce_stage(ce)) {
 			show_unmerge(ce->name);
 			while (i < entries &&
@@ -141,7 +148,7 @@
 			      ce->sha1, (changed ? null_sha1 : ce->sha1),
 			      ce->name);
 	}
-	diffcore_std((1 < argc) ? argv + 1 : NULL,
+	diffcore_std(pathspec, 
 		     detect_rename, diff_score_opt,
 		     pickaxe, pickaxe_opts,
 		     diff_break_opt,