HLSL: phase 2b: add l-value operator[] for RWTexture/RWBuffer

This commit adds l-value support for RW texture and buffer objects.
Supported are:

- pre and post inc/decrement
- function out parameters
- op-assignments, such as *=, +-, etc.
- result values from op-assignments.  e.g, val=(MyRwTex[loc] *= 2);

Not supported are:
- Function inout parameters
- multiple post-inc/decrement operators.  E.g, MyRWTex[loc]++++;
diff --git a/hlsl/hlslGrammar.cpp b/hlsl/hlslGrammar.cpp
index 626d299..5dc25fc 100755
--- a/hlsl/hlslGrammar.cpp
+++ b/hlsl/hlslGrammar.cpp
@@ -1783,6 +1783,8 @@
     }
 
     node = parseContext.handleAssign(loc, assignOp, node, rightNode);
+    node = parseContext.handleLvalue(loc, "assign", node);
+
     if (node == nullptr) {
         parseContext.error(loc, "could not create assignment", "", "");
         return false;
@@ -1946,6 +1948,7 @@
         return true;
 
     node = intermediate.addUnaryMath(unaryOp, node, loc);
+    node = parseContext.handleLvalue(loc, "", node);
 
     return node != nullptr;
 }
@@ -2061,6 +2064,7 @@
         case EOpPostDecrement:
             // DEC_OP
             node = intermediate.addUnaryMath(postOp, node, loc);
+            node = parseContext.handleLvalue(loc, "", node);
             break;
         default:
             assert(0);