New register allocation hinting mechanism

I just updated register allocation hinting mechanism to be more flexible and hopefully easier to use.

If you have an out-of-tree target that was overriding the TRI::ResolveRegAllocHint() or TRI::getRawAllocationOrder() functions, you should switch it to using the new TRI::getRegAllocationHints() function instead. See the ARM target for an example.

Zino, I believe the new hints are powerful enough to improve ldm/stm formation on ARM. Were you interested in working on that?