more IR format changes

- make parameters an array, as suggested by Ken
- add predicates (whoops)

I didn't bother to split this up, sorry
implement a few things in the GLSL types wrapper

Will be needed for validation.
implement a validation pass similar to ir_validate

VALIDATE ALL THE THINGS!!! Hopefully this will be the last "add a huge
pile of code for basic IR bringup" commit.
add warnings and fix some bugs they point out

Probably should've had this from the beginning...