Move RelativeToTop out of basePath

RelativeToTop is documented as returning the same concrete type that was
passed in, which wasn't true for SourcePath.  Implement it in SourcePath
and delete it from basePath.

Test: all soong tests pass
Flag: EXEMPT refactor
Change-Id: I5f2fd1237b964aa10565f7c6b34122dd6972fda9
diff --git a/android/paths.go b/android/paths.go
index 0661b76..dad70f7 100644
--- a/android/paths.go
+++ b/android/paths.go
@@ -1119,11 +1119,6 @@
 	return p
 }
 
-func (p basePath) RelativeToTop() Path {
-	ensureTestOnly()
-	return p
-}
-
 // SourcePath is a Path representing a file path rooted from SrcDir
 type SourcePath struct {
 	basePath
@@ -1136,6 +1131,11 @@
 	return p
 }
 
+func (p SourcePath) RelativeToTop() Path {
+	ensureTestOnly()
+	return p
+}
+
 // safePathForSource is for paths that we expect are safe -- only for use by go
 // code that is embedding ninja variables in paths
 func safePathForSource(ctx PathContext, pathComponents ...string) (SourcePath, error) {