UPSTREAM! glsl: Add an ir_variable::max_ifc_array_access field.

For interface blocks that contain arrays, this field will contain the
maximum element of each contained array that is accessed by the
shader.  This is a first step toward supporting unsized arrays in
interface blocks.

TODO:
- Make use of is_interface_instance()
- compute_max_ifc_array_access_size should go away.  It should be effectively
  this->is_interface_instance() ? this->interface_type->length : 0.
glsl: Update ir_variable::max_ifc_array_access properly.

This patch adds an implementation of
ir_dereference_record::update_max_array_access(), which ensures that
ir_variable::max_ifc_array_access is properly updated to reflect the
shader's use of arrays appearing within interface blocks.
!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 *).