simplification, new model is such that the upon start the method:
has a message in r0, works on it and returns to the return address.
Everything else is up to the caller
that means SaveReturn is obsolete (breaks loads of tests)
first step towards multi - return which obviously can not have the
callee save return address.
In fact this would make FunctionCall redundant too, as it is really
just a branch