Return to task from task__pop()

This prevents a theoretical stack overflow when a task is interrupted
and pushed just before it is done being popped.

This is implemented by returning to the task via either "ret" or "reti",
depending on the interrupt bit in the status register, before it has
been restored.