HLSL: phase 2c: use lValueErrorCheck in HLSL FE

This commit splits lValueErrorCheck into machine dependent and independent
parts.  The GLSL form in TParseContext inherits from and invokes the
machine dependent part in TParseContextBase.  The base form checks language
independent things.  This split does not change the set of errors tested
for: the test results are identical.

The new base class interface is now used from the HLSL FE to test lvalues.
There was one test diff due to this, where the test was writing to a uniform.
It still does the same indirections, but does not attempt a uniform write.
diff --git a/Test/hlsl.struct.frag b/Test/hlsl.struct.frag
index 2c511a6..456c9ef 100644
--- a/Test/hlsl.struct.frag
+++ b/Test/hlsl.struct.frag
@@ -37,7 +37,7 @@
     } s3;
 
     s3 == s3;
-    s2.i = s.ff4;
+    s2.i; s.ff4; // no assignments to uniforms, but preserve indirections.
 
     return input;
-}
\ No newline at end of file
+}