ipc: add xfer pagefault test

It causes the kernel to panic, as expected.

This changeset also adds a "dropping pager", which starts flushing
previously-mapped pages after a certain number of page faults (currently two).
This pager will likely be useful for testing string transfer timeouts, as
well.
mapdb: fix last-page case in discontiguate()

Also adds a check wrt its contract while NDEBUG isn't defined. That loop runs
quickly enough that DEBUG_ME_HARDER isn't justified.
mapdb: fix group scanning in mapdb_unmap_fpage()

Apparently the assumption was that entries follow one another. That's
completely false.
mapdb: add large unmap test

Fails as expected, since there's a particular bug in mapdb.c as of the
previous version.
mapdb: counteract loop bump in the immediate unmap entry dropping case

The entry also disappears, so there's no relevance to altering its ->access
field. Previously that happened to the next entry.
testbench: retain the sbrk() provider TID on first call

This patches around dlmalloc calls from contexts where paging is provided by
something other than plain forkserv.
sched: add TS_XFER to IS_READY()

Also change the active receive post-exception path to not assert for
IS_READY(), as post-exception hooks may start the next IPC right away so the
"ready to schedule" transition might've'nt happened.

There's a barely-related TRACE() macro update in sched.c, which is more to
include that file in this changeset (as IS_READY() affects timeslice
expansion) than for a conventional reason.
ipc: rewrite stritem_faults()

It's still brute force, which is fine as most string items are short anyway.
In the future it should be refactored to scan the involved map_groups and
their entries in a loop that doesn't involve repeated probing.
ipc: add in-xfer faults

Raising, and resuming from. The unit tests don't go so far as to ensure that
all recursive paths have been covered, so presumably those are still broken.