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
Yeah, actually now that I think about it, it makes more sense to turn that `(int8_t)` cast into a regular method call - e.g. `reg.index()`.  I used it as a cast at first to simplify transitioning to the Register class, but it really just confuses the issue now.  I'll push an update.