AP booting, numerous fixes. Broken on non-HPET systems.

Fails due to (probably) some null pointer dereference somewhere in timer
code after calling `drop_bootloader_mappings()`.