tuple constant no longer mutable

for example if the following is in a function:
    int[] a = [0,0,0]
    printf("%d\n", a[0])
    a[0] = 1
the second call to the function will print '0' as expected

reorganized array operations into seperate functions (index, size, ptr)
allow for chained logical op

correctly select PHI input block in 'and'/'or' expressions