Clunky adaptive mutexes

Semaphores will spin a bit before sleeping.  The amount of time is up to you
(CONFIG).

Note that you can't always profile the time spent spinning, since we can't
enable IRQs blindly in sem_down().  Even if we still have IRQs disabled when we
trydown(), we'd still deadlock since CVs are implemented with semaphores.

On a similar note, CVs and thus rendezes are implemented under the hood with
semaphores.  It's not clear to me that spinning is the right approach here.

Additionally, Akaros is a non-preemptive kernel, in that kernel code won't be
preempted for other routine kernel code.  If a sem is upped in a routine kernel
message (RKM), then spinning will be harmful if the unblocking RKM is sent to
the spinning core.
Helper program 'm'

Accesses the monitor from userspace, via Ron's #Z.

/ $ m kfunc whatever
/ $ m help
/ $ m nanwan
Kernel alarm helpers

Reset and unset are idempotent, making them much more useful than just
set_alarm.  I might get rid of set_alarm and just have them all be reset
or something.

And if there's an ABS version, you probably want a REL version too.

And the __ locked versions are for use in IRQ handlers (though not for
RKM handlers).  Be careful!
Per-cpu timer control for oprofile sampling

To use oprof now, you need to set the timer, then enable the profiling.
If/when we add other tracers that can be turned on and off, we'll
continue to use this model: set the collection of things to trace, then
start them all at once.

If you don't have the timers turned on, but you run opstart, other
traces, such as TRACE_ME and whatnot (like perhaps writing traces from
userspace via kpoprofile) will still be collected.

I don't have a control for various TRACE_MEs yet.  Maybe we can add one
(like printx).

Some examples:

To turn on the timer on core 0.  This turns on an alarm/IRQ:

$ echo optimer 0 on > /prof/kpctl

Then start the actual profiling/collection:

$ echo opstart > /prof/kpctl

To stop collecting:

$ echo opstop > /prof/kpctl

To turn off all the timers:

$ echo optimer all off > /prof/kpctl

Oh, and you can adjust the timer period if you like.  Default is 1ms.

$ echo optimer period 1000 > /prof/kpctl (period is in usec)
Semaphore blocking optracer

Generates an oprof backtrace whenever a semaphore is downed and will
likely block.  There's a slight chance it won't block and a trace will
still be taken.

To enable tracing, you need to:

$ echo opstart > /prof/kpctl

It is not necessary (or maybe even desirable) to run the optimer sampler
at the same time.