vrevoke/single-user - fix more revoke issues.
* vrevoke() no longer clears vp->v_rdev. Doing so interferes with specfs's
ability to call dev_dclose(). Fixing this will allow the regular close
of the vnode to close the underlying device.
Since the revoke code detaches the vnode from any user-visible file
descriptors the vnode will end up being closed the moment the last
referenced to the detached fp goes away.
* kill 1 no longer leaves the syscons in a state where both /dev/ttyv0 and
/dev/console are marked open (due to the above bug). This state would
cause the keyboard to stop working sometimes when dropping into single
user.
* Add dev_drevoke() and friends. This allows a device to do something
when an attempt is made to revoke() the related vnode.
TTY and PTY devices now attempt to break out of any ttysleep() operation
(such as when processes are blocked in read()). This is advisory and
if it fails to break a process out of a blocked condition that process
will still detach after the blocked condition is resolved normally.