Fixes brutal bug with calling schedule()

This was super nasty.  Running the scheduler at arbitrary places
seriously messes things ups.  This one started off with the
current_errstr() assert failing, which seemed like we didn't have a
syscall when we were running syscall code.
Renames schedule()

To avoid any future bugs like fb7e2a51.  Our schedule() is different
than regular OSs, for better or worse.