Specify that the QEMU machine must have 3 GB of RAM.

Now we know exactly how much to expect when we test the system.
Make linker PROVIDE important addresses, such as kernel_end.
Add header that declares the locations that the linker PROVIDEs.
Add structs and constans for reading multiboot info, including the memory map.
Add dummy memory_catalog_initialize().

Currently, it doesn't actually initialize any memory catalog at all!
It just reads the Multiboot memory map and prints its findings.
Make multiboot validator check for memory and mmap flags.

Also, make kernel call memory_catalog_initialize() procedure.
Add forgotten imports.
Build up the memory catalog!

All available memory is added to free_list in memory_catalog.c.
Only allocate 8MB for the memory catalog.

We only track up to 4GB/4KB = (1 << 20) blocks, and each block is represented by an
8-byte `struct MemoryCatalogBlock`.  So, we only need 8MB to store the blocks.
Remove stray printf.
Implement allocate and free functions for physical memory.
Merge pull request #11 from jasonpr59/memory-catalog

Implement physical memory allocator.