Previously, we would generate parentheses proactively when generating binary ops, however, this leads to uglier code and hits warnings in compilers when used as a conditional.
Deals better with composite construction in C++ and also fixes a few bugs in GLSL backend with array-of-arrays.