Allow ' ', '(', ')' and '$' in labels 

This just add the special characters in labels and fixes the
associated tests, left is the hard part to test adding
those characters everywhere.

This is experimental and several characters will break at several
location especial in the runfiles manifest file.

Follow-ups: Resolve quoting then test, test more and add even more tests.

Issue found during development:
  Parentheses are not accepted in exclude pattern in globs
  Building a binary includes build-runfiles that relies on the runfiles
  manifest format so the added test would fails with a java_binary
  instead of a library.

--
Change-Id: I9c87273a90318b931c61bdb86f1066962819960a
Reviewed-on: https://cr.bazel.build/9055
PiperOrigin-RevId: 149108027
MOS_MIGRATED_REVID=149108027
diff --git a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java
index 2966fc8..f8b3d16 100644
--- a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java
@@ -801,8 +801,8 @@
   @Test
   public void testLabelGetRelativeSyntaxError() throws Exception {
     checkErrorContains(
-        "invalid target name 'bad syntax': target names may not contain ' '",
-        "Label('//foo:bar').relative('bad syntax')");
+        "invalid target name 'bad//syntax': target names may not contain '//' path separators",
+        "Label('//foo:bar').relative('bad//syntax')");
   }
 
   @Test