Restructure kernel init sequence.

This is in preparation for future changes, which will require
different init procedures to have access to different data.
Add struct PushedRegisters.

This struct allows one to easily access pushed registes by name, after
a `pushal` instruction runs.
Validate the handoff from the multiboot bootloader to the OS.

This means:
  * Save the handoff-time registers in boot.s.
  * Pass them to kernel_main().
  * Validate that the EAX register contained the multiboot handoff
    magic number.
Merge pull request #10 from jasonpr59/multiboot

Check the multiboot handoff.