MPSAFE TTY - Fix deadlock in reporting of probe errors.
* When sio can't drain it reports the fact, but it was doing it while
still holding com_lock. Rearranging the lock fixes the problem.
* Clean up some unnecessary tty_tokens in critical code paths and rearrange
code to not hold com_lock across tty_token acquisition calls.
* Release the com_lock around breakpoint() (<enter>~^B sequence) to
avoid a deadlock.
* Detect and ignore a reentrant kprintf() to try to avoid a deadlock.
The detection flag is also reset by a panic.