Let tablegen compute maximum lanemask for regs/regclasses.

Let tablegen compute the combination of subregister lanemasks for all
subregisters in a register/register class. This is preparation for further
work subregister allocation
Add function that translates subregister lane masks to other subregs.

This works like the composeSubRegisterIndices() function but transforms
a subregister lane mask instead of a subregister index.
LiveInterval: Add const version of LiveRange::advanceTo().
LiveInterval: Add a 'covers' operation to LiveRange.
LiveInterval: Add support to track liveness of subregisters.

This code adds the required data structures. Algorithms to compute it follow.
LiveIntervalAnalysis: Compute subregister ranges.
LiveIntervalAnalysis: Make computeDeadValues() private.
LiveIntervalAnalysis: Update SubRanges in shrinkToUses().
LiveIntervalAnalysis: Adapt handleMove() to subregister ranges.
LiveRangeEdit: Adapt eliminateDeadDef() to subregister liveness.
LiveIntervalAnalysis: Adapt repairIntervalsInRange() to subregister liveness.
Add a flag to enable/disable subregister liveness.
LiveInterval: Introduce LiveQuery accessor for dead or live out values.
LiveIntervalAnalysis: Add subregister aware variants pruneValue().
LiveInterval: Add removeEmptySubRanges().
RegisterCoalescer: Preserve subregister liveranges.
Tablegen'erate lanemasks for register units.

Now we can relate lanemasks in a virtual register to register units.
LiveIntervalUnion: Allow specification of liverange when unifying/extracting.

This allows it to add subregister ranges into the union.
LiveRegMatrix: Respect subregister liveness when allocating registers.
VirtRegMap: No implicit defs/uses for super registers with subreg liveness tracking.

Adding the implicit defs/uses to the superregisters is semantically questionable
but was not dangerous before as the register allocator never assigned the same
register to two overlapping LiveIntervals even when the actually live
subregisters do not overlap. With subregister liveness tracking enabled this
does actually happen and leads to subsequent bugs if we don't stop adding
the superregister defs/uses.