Stop PathForModuleSrc from validating the paths unnecessarily

PathForModuleSrc calls validatePath in order to convert the supplied
path components into a single path. Unfortunately, that corrupts a
fully qualified module name. So, when given "//namespace:module" it
treats it as a path and replaces "//" with "/". That replacement is
done by a call to filepath.Join().

This change simply concatenates the path components together textually,
using the path separator, to avoid the corruption. That ensures that
a fully qualified module name is preserved and processed properly. If
the path components do not contain a module name then expandOneSrcPath
will call pathForModuleSrc which validates the path so it does not open
up a way to create an invalid path as the validation was unnecessary
anyway.

Bug: 193228441
Test: m nothing
Change-Id: I0bb66feac182b77ce96c8d5d5f17e28ea28d75ba
diff --git a/android/paths_test.go b/android/paths_test.go
index c0667dc..4c18cfd 100644
--- a/android/paths_test.go
+++ b/android/paths_test.go
@@ -1373,8 +1373,7 @@
 				}
 			`),
 			errorHandler: FixtureExpectsAllErrorsToMatchAPattern([]string{
-				// The message is broken because PathForModuleSrc corrupts the name during validation.
-				`"foo": missing dependencies: /other:b, is the property annotated with android:"path"`,
+				`"foo": missing dependencies: //other:b, is the property annotated with android:"path"`,
 				`"foo": missing dependency on "//other:c", is the property annotated with android:"path"`,
 			}),
 		},