`@allocated`: back to version that uses a thunk.

This attempts to avoid allocation by wrapping the expression to be
called in a thunk. This is somewhat unsatisfactory, however:

  - the code does not behave as it would in the current context
  - compilation may still occur during function execution

Still, this seems to make @timholy happier :-)