Refactor heap type definitions to heaptypes.h

Consolidate all heap definitions (the composition of many heap layers
into a usable heap) into a single module that we can maintain. This
should help solve experimenting with different tunings of each
allocator.
Clean up header imports.

Attempt to clean up import headers for cleanliness. It also simplified a
few things, but still have dependency between source <-> heaptypes that
forces us to have typedefs in two seperate files.
Killed internal source heap

Two major changes:

1) Killed internal source heap. This means the source heap (now
SourceMmapHeap) doesn't need to maintain internally memory to keep
pointer sizes (the higher order layers do this anyway) and the size of
pointers at the SourceMmapHeap is always predictable (it's the ZONE_SZ).
So, no need to keep a seperate memory pool around for it.

2) Added some forward declarations so that we could consolidate all heap
layer type definitions to a single file.