Bugfix: make sure rq->clock is current

Before using rq->clock to represent the current time, make sure that
the value in rq->clock has actually been updated.
P-FP: Do not compare priorities if second task is inactive

This solves a race where the scheduled task gets interrupted by a job
release during a lock operation, between setting up priority
inheritance and suspending.
P-FP/PCP: On unlock, determine priority inheritance after waking up tasks

First give up priority inheritance, then wake up tasks, finally
determine new inheritance. This should prevent a priority comparison
between between the current job and the job that it inherits from when
releasing nested locks.
P-FP/MPCP&FMLP+: move wake_up_task() outside critical section

The spin lock protecting each mutex is not required to wake up a task,
so drop it before waking the new lock holder.  This prevents the
lock() operation from blocking up to 20,000 cycles (on ARM) waiting
for intra-processor communication, without changing the worst case of
the unlock operation.

Additional style fixes included.
P-FP/FMLP+: Use logical timestamp instead of wall-time for boost prio

The FMLP+ depends on the relative order of lock requests, which can be
established with a simple per-processor counter instead of the reading
a clock.  This saves ~300 cycles per lock operation on ARM.
Warn user when high-resolution timers are missing

Give the user a hint as to where high latencies may
be stemming from...
LITMUS^RT KConfig: add option for quantum length

In preparation of uncoupling LITMUS^RT from scheduler ticks,
let's have a custom quantum length configuration variable.
Use CONFIG_LITMUS_QUANTUM_LENGTH_US in litmus.h

Define LITMUS_QUANTUM_LENGTH_NS and adjust quantum arithmetic.
Pfair: use hrtimers for quantum-driven scheduling

Instead of relying on the system's scheduler tick, which
is slowly going away in upstream versions due to dynticks,
this patch changes the Pfair plugin to use custom timers
to fire at each quantum boundary.
LITMUS^RT KConfig: Pfair no longer depends on scheduler_tick()

We can remove the dependency on HZ and periodic ticks. Further,
everything in LITMUS^RT sort of depends on high-resolution timers, and
PFAIR is one of the few pieces actually able to work without
high-resolution timers, so it makes little sense to have
an explicit dependency.
C-EDF: remove scheduler_tick() callback
GSN-EDF: remove scheduler_tick() callback
P-FP: remove scheduler_tick() callback
PSN-EDF: remove scheduler_tick() callback
Remove tick() from scheduler plugin interface

Not used by any plugins.
Remove litmus_tick() calls from scheduler core

No longer needed since plugins no longer depend
on the system tick.
LITMUS^RT core: remove litmus_tick()

This patch removes the now unused litmus_tick() and
reimplements the support for imprecise budget enforcement
in the proper tick() function of the LITMUS^RT scheduler class.
Revert "Add quantum aligment code"

This reverts commit 609004c71bc6535595e9fe37f27de3285d1d562d, as it is
no longer needed. This revert will be squashed as part of the next
rebase.
Re-introduce cmdline option for aligned quanta

This patches re-introduces the cmdline option for aligned quanta.  By
default, LITMUS^RT uses staggered quanta, as this reduces overheads.

To boot with aligned quanta, specify litmus.aligned_quanta=1 on the
kernel commandline.  The parameter is also accessible at runtime (and
can also be changed) via:

	 /sys/module/litmus/parameters/aligned_quanta

This parameter affects only Pfair. Linux's native scheduler tick is
not affected by ths parameter.