Firm graph construction for function calls, array accesses and allocations

I know array accesses weren't technically my job, but I kinda forgot that. This makes the programs we can compile vastly more interesting.

There's no tests yet because it's half past one and I can't for the life of mine figure out why the tests I have locally don't work.

(fulfills #129 and half of #128 when merged)