Initial AArch64 support.

This is mostly a clean up commit that gets ready for supporting AArch64.
Actually supporting AArch64 will bring quite a few hardships due to the work that needs to be done.