Add support for arbitrary flags to MemoryMap.

This also fixes up the documentation a bit, it was subtly incorrect.
Use `mmap` to map in task stacks and guard page
Implement caching of stacks