Fix interpolate

I don't know how this ever worked, but the size of the local tensor we write to in the kernel is always A[1].  I think the correct fix is the make the local tensor the size of the product of the expression shape.  Additionally I check that this matches the Function's value_shape.