!UPSTREAM: glsl/linker: Modify array_sizing_visitor to handle interface blocks.

Fixes piglit tests
"spec/glsl-1.50/linker/interface-blocks-unsized-array-mismatch" and
"spec/glsl-1.50/linker/interface-blocks-unsized-array-gs-mismatch"

TODO:
- Better comments
- Make use of is_interface_instance()
glsl: Sanity check max_ifc_array_access in ir_validate::visit(ir_variable *).
glsl: Update call_link_visitor to update max_ifc_array_access.

When multiple shaders of the same type access an interface block
containing an unsized array, we need to set the array size based on
the maximum array element accessed across all the shaders.  This is
similar to what we already do with unsized arrays occurring outside of
interface blocks.

Note: one corner case is not yet addressed by these patches: the case
where one compilation unit defines an interface block containing
unsized arrays and another compilation unit defines the same interface
block containing sized arrays.