glsl: make .length() support multidimensional arrays
glsl: Support cloning of arrays of arrays (still some work to be done see TODO)
glsl: due to their nature glsl_type can just act as if
 matrix are one dimension
glsl: bunch of changes to support arrays_of_arrays but many of the changes only handle single dimensions for now see TODO's
glsl: length to num_elements for interface and structures
glsl: more single dimension support leave multidim to
 later
should be ok to just treat this as single dimension
use single dimension array values
Support only single dims in drivers for now
glsl: only call mark_max_array if we are assigning an
 array
glsl: cast dimension size as .length() returns int