correctly coerce pointer and tuple types

fix pass tuple by reference to function (eg. [int, int]^ myparam)