Minor change to user measurements

This allows the throughput to handle a break in the samples.  This is
useful if you only want to report some samples.  For example, you can
set a timestamp field bool valid = (num_vcores() == max_vcores()) to
only record samples that happen when we have all the vcores.
Ensure multiboot is in the beginning of .text

The multiboot header needs to be in the first 8K.  It is currently,
since we placed it in the beginning of entry.S, and that is the first
thing passed to ld.  This change ensures it will always remain in the
beginning (regardless of future changes or ld tricks).
Forces all applications to link with -lm (XCC)

Since parlib's measure has math functions in it, anyone linking against
parlib will need -lm.  Since we're forcing -lparlib, we might as well do
-lm too.  The alternative would be to not allow math functions in
parlib.  While I can get by with that for now (move measure somewhere
else or rewrite sqrt()), I can imagine us using math in parlib in the
future.

If it becomes a big deal, we can revert this.  Though libm.so is less
than 10% of the size of libc.so (660K vs 7.5M).

Rebuild gcc fully.  Make clean, if you are unsure of what to do.
Fixes bug with gcc 4.8 (XCC)

Gcc 4.8 can't build 4.6.3 without this patch.  Check out:
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54638 for more info.  This
commit is just the backport of the 4.6.4 patch, put in the -ros
directory (instead of an actual .patch).

Rebuild gcc fully.  Make clean, if you are unsure of what to do.
UCQs use spin-pdr instead of mcs-pdr locks
Reworks MCS-PDR locks to avoid preempt storms

The old style would aggressively switch to its pred, which made it
extremely unlikely to ever have a vcore outside the MCS chain recover
one of the vcores in the chain.  This means that we would always have a
vcore in the chain that was preempted, leading to at least one syscall
per lock acquisition.  This causes a massive amount of
preemption/change-tos that last until all vcores are given back.

The new style tries to restart the lockholder, instead of pred, only
relying on pred when there is no other way out.  This style recovers
quickly from a preemption, even if the vcores are never given back.

While it might be a little slower than the old PDR locks, it is
significantly safer, and is now the default.

The old style PDR locks are now called mcs_pdro_locks (o for
old).

Note there are a few optimizations that the first version of PDR locks
didn't have that were important.  (First version being the one from over
a year ago).  The lockholder handoff is handed off when we unlock our
qnode->next, which saves a lot on cache line contention.  We use the
qnodes address for pointer arithmetic to determine vcoreid.  And we
properly memalign the qnode storage, ensuring cache line alignment.

As far as cache lines go, some prefetching ruins our "independent" cache
lines.  For now, I turn off things like Adjacent Cacheline Prefetching,
or whatever it's called these days.  Would be nice if we had an
instruction that explicitly didn't trigger a prefetch on a load or
store.
Locking infrastructure helpers

This stuff was just used when testing preemption scenarios.  Ideally,
all of it would be in its own C program.  Check out the TODOs at the top
of lockprov.sh for details.