Added mm/mem.{c,h} for global memory sizes/address/etc.

mm/mem allows us to control and define different parts of memory
in a machine independent way. We make the boot code initialize the
mem_map struct by passing in all the machine dependent information
it needs, and then in the kernel we can just refer to the mem_map
rather than the machine-dependent values.

In addition, if memory parameters change (for example, if we want
to grow or shrink the kernel), we change the mem_map and everything
will then use the new values in mem_map.