Propagate hlsl variable names

This branch builds upon the attributes-for-gles-and-optional branch so if you pull this one you'd also be pulling the 3 commits in that one.