Support user heap

To support dynamically grown address spaces, this establishes
some new kernel support for the dynamically inserting VM
regions into the address space.

Also had to:

* Fix #include guards on system headers
* Fix up some Doxygen comments
* Write some user-mode code to exercise the heap
Merge branch 'master' into heap
Add simple beginnings of a terminal driver

It takes over character-echo responsibilities from the UART
driver.