John Wittrock found a bug:  We don't currently properly restore registers from a fault handler.
Gao Xiang found and debugged a fundamental bug in the memory
management.  This removes redundant reference increments on frames
(physical pages) in the memory mapper.
Merge branch 'master' into tcaps
TCaps: budget accounting + replenishing, splitting, and separate tcaps for interrupts and threads (for a single scheduler.

1) Budget accounting and replenishment.  On thread switches, the
budget is update.  Also, we make sure that the tcap we switch to is a)
not expired, and b) has budget left.  On timer-ticks the persistent
tcap for the scheduler is replenished.

2) Splitting to create new tcaps (pooled and non) works.  This
exercizes the tcap_transfer path.

3) The scheduler has been adapted to include three new tcaps for a)
timer interrupt, b) network interrupt, and c) normal execution.  They
have appropriate priorities.  These priorities are currently ignored.

NOTE: I had to hack the first timer tick: The budget is twice a timer
tick.  For some reason between tick 0 and 1, the tick length is more
than a timer tick.  Don't really know why.
TCaps: Fixed the scheduler hierarchical interface to remove the use of
the shared data region.  Now it uses the support recently added for
treadp to return multiple arguments.  This includes adding new stubs
for the sched_hier interface.