Moved mmap.[h|c] into new folder

In preparation for other related modules dealing with memory allocation.
Trying to allow optional makefile command line args

The kernel has a couple of optional debug/test flags that can be defined
while compiling, before they would override the required flags. Now they
are appended after the required flags. This may not be the proper way to
do it, but it works for now and will be investigated further later.
Added stack data structure from Bikeshed64
Useful definitions for virtual memory

Virtual memory isn't fully implemented yet and only the kernel's 2MiB
region is identity mapped, so not much use for now. This OS will also
use virtual memory in a very different fashion than typical operating
systems. Since there is no ring0/3 distinction and all the memory is
identity mapped, virtual memory will mostly be used for preventing
fragmentation or other problems instead of protection.
Ported the physical allocator from Bikeshed64

This physical allocator can do constant time allocations and frees. It
is essentially a block allocator that can have a nested block allocator.
Useful for allocating aligned regions of memory.
Fixed include guards to be more consistent
Added a layer of indirection for memory initialization

Makes kmain() a little cleaner.