Partial varying struct support.  TODO: disentangle and comment better.
Hack: disable structure splitting for "in" and "out" vars.

Really I want to disable structure splitting for shader ins/outs, but
at the moment it's hard to tell the difference between those and
function ins/outs.
Got the initial varying struct test to pass