Add IceLiveRange endsBefore() and overlaps() methods.
Add stubs for IceRegAlloc.cpp.

In preparation for linear scan register allocation, and perhaps more
in the future.
First implementation of linear-scan register allocation.

This is a pretty much verbatim implementation of Section 5 of
ftp://ftp.ssw.uni-linz.ac.at/pub/Papers/Moe02.PDF.

It doesn't yet actually finalize any assignments in the IceVariables,
but it goes through the calculation and dumps the results after each
step.  The results look reasonable for the two examples in IceTest.

One issue I noticed is that this doesn't necessarily do the best for
chains of operations resembling assignments or loads, such as
"b=a;c=b;d=c;e=d;" with short non-overlapping live ranges, because
we'd kind of like to pre-coalesce these independent live ranges and
treat them as one big live range with a much greater weight, giving
them higher priority for a register.  On the other hand, this
situation might get cleaned up naturally by the local register
allocator.

One issue needs refactoring.  There is a lot of repetition in
iterating over the Active, Inactive, Handled, and Unhandled sets, and
the iteration is complicated when elements may have to be removed from
the set currently being iterated over.  I think these four sets should
be combined into one, with individual elements tagged with their
state.