mbiloader: fix off-by-one in post-load ELF clear

When the stars aligned correctly, this would wipe out the first byte of the
first user-specified module. Further related defects remain.
mbiloader: fix inclusive/exclusive confusion wrt boot_module->end

Some uncertainty remains wrt boot_module->load_end .
test: self: thread starting, joining, process exit

This series corrects the out-of-sync join issue while retaining compatibility
to paths that do an explicit sync.

The process exit portion tests new behaviour that the explicit ThreadMgr model
introduces: that a process exits when its final thread exits, irrespective of
whether that thread was the original fork() child or something it created.
testbench: add ThreadMgr, implement non-forkserv portion

The manager thread's interface is specified in threadmgr.idl . There is one
such thread per process, and its thread number is set to caller + 1 by the
root task and inherited by children. (the whole thread number thing should be
removed for being highly crufty.)

Pieces missing:
  - sending of segfaults from forkserv
  - tracking of the manager thread in forkserv for that purpose
  - tests for segfault signaling
test: self: add segfault delivery test

No segfaults can be triggered because of forkserv/testbench design flaw.
This'll be rectified next.
testbench: rework ForkServ::sbrk()

The break now starts out at the where physical memory ends according to KIP
memory descriptors.
testbench: add ForkServ::set_mgr_tid()

No callers yet though.
testbench: send segv from forkserv, catch it in thread.c

Causes the tests to pass.
test: self: add test for uncaught segv behaviour