First shot at proper support for multidimensional arrays

Instead of turning all arrays to pointers straight away (which XC16
doesn't like), we keep them as arrays for as long as possible, turning
them into pointers only when necessary.
Merge branch 'feature/multidimensional-arrays' into next