Refactoring to allow up to 64 registers

This does several things:
* Split the single 64-bit mask type used in plan* functions into two 64-bit fields of the "RegisterMask" class
* Make Register a class, replacing many previous "int"s and adding a bit of extra type safety
* Rename lir::Register to lir::RegisterPair, for clarity
* Other tangential refactorings

This compiles on:
* x86_64 (linux, mac)
* i386 (mac)
* arm (linux and ios)

Additionally, all the tests pass on the above platforms, with the obvious exception of ios-arm (lacking a jail-broken device).

Future improvement:
* I'm not a huge fan of the (int8_t) casts this sprinkles around, but I'm not sure of a better way to do that, while preserving the added type safety
No big deal, but it's a little weird that you're using both C++ and C style casts in the same line here.