progress on L3Interp with new mem model, and more:

fixed up all interpreter functions that take a "caller" arg to take it as the first arg
added stuff to Memory:
  * newArray (and made allocate call it)
  * changed print to return (Num 1)
  * added arraySize
  * added safeReadMem and safeWriteMem which call arrayError on index out of bounds
moved bind2 to Utils and added bind3
other small code cleanups