kernel - Implement new callout*() core

* Rewrite the callout*() function core to run more efficiently.
  This has a much better mechanism for locking a callout to a
  cpu and for dealing with synchronous waits for callbacks to
  complete.

  The IPI busy/wait loop has been removed for remote-cpu operations.
  The code now blocks normally and callers will have to understand that.
  This will make it a lot easier to debug races.

* Add callout_init_lk() which implements auto-locking similar
  to FreeBSD.  Several FreeBSD mechanisms already depend on it
  and it will make porting easier.  And it works pretty well.

* Preparation for a more synchronous interface.

* Note that the new API is roughly similar to the old
  except callout_reset() now issues a synchronous stop
  instead of an asynchronous stop.  Soon we will also
  switch around the function names to make MP operation
  and synchronous operation the default across the
  board.
kernel - Fix callout deadlock in u4b

* Fix a deadlock which could freeze systems prior to the callout work and
  cause X to deadlock (but not totally freeze a system) after the callout
  work.

* Use the new callout_init_lk() auto-locking feature to handle a particular
  usb callout.  This allows the callout to be canceled if it interferes with
  a frontend callout_reset() call and also fixes the related race.
kernel - Fix panic on upmap/kpmap read via procfs.

* Fix a panic when upmap/kpmap is accessed via procfs.

Reported-by: Joris Giovannangeli
kernel - Show ukmap in /proc/*/map output

* /proc/*/map now displays uksmap mappings.