Break dependency on vfs from the interface of syntax and cmdline.

These libs are exposed externally, implying that the vfs is also exposed externally.

We break out PathFragment from vfs to still use this in their interface. This class is a much smaller dependency than the entire vfs.

PiperOrigin-RevId: 174729373
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/Printer.java b/src/main/java/com/google/devtools/build/lib/syntax/Printer.java
index fe4191f..69b16fe 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/Printer.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/Printer.java
@@ -16,11 +16,10 @@
 import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Iterables;
 import com.google.devtools.build.lib.events.Location;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkPrintable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkPrinter;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
 import com.google.devtools.build.lib.syntax.SkylarkList.Tuple;
-import com.google.devtools.build.lib.vfs.Path;
-import com.google.devtools.build.lib.vfs.PathFragment;
 import java.io.IOException;
 import java.util.Arrays;
 import java.util.Formattable;
@@ -316,8 +315,8 @@
         // values such as Locations or ASTs.
         this.append("null");
 
-      } else if (o instanceof SkylarkValue) {
-        ((SkylarkValue) o).repr(this);
+      } else if (o instanceof SkylarkPrintable) {
+        ((SkylarkPrintable) o).repr(this);
 
       } else if (o instanceof String) {
         writeString((String) o);
@@ -344,13 +343,6 @@
         this.repr(entry.getKey());
         this.append(": ");
         this.repr(entry.getValue());
-
-      } else if (o instanceof PathFragment) {
-        this.append(((PathFragment) o).getPathString());
-
-      } else if (o instanceof Path) {
-        append(o.toString());
-
       } else if (o instanceof Class<?>) {
         this.append(EvalUtils.getDataTypeNameFromClass((Class<?>) o));