testbench: increase userspace thread limit to 32

This changeset adds a test for this, and moves MAX_THREADS into defs.h .

testbench.c now also knows that mung gives the root task a 64k UTCB range,
though this should ideally be determined programmatically.
test: x86: add rdtsc smoketest
testbench: add Ipc & Lipc benchmark

Also the "notest" and "bench" options. Use together to run just the
benchmarks.
testbench: add IDL mediated IPC benchmark

This could also do a string transfer with minimal effort.
trace: remove use of hashtables

All the identifiers are small integers, so the table may as well be sized
dynamically.
testbench: measure syscall latency with ThreadSwitch

An unimplemented syscall would be more appropriate, but this'll do for now.
sched: fix self case in sys_threadswitch
lib: add rudimentary, untested memmove(3) to string.c

And stubs for free(), abort() to mbiloader.c .
testbench: use the CCAN tally module in benchmark.c
separate syscall architecture glue from implementation
exception: rework basic_sc bottom half

No more indirect function calls.
change syscall impls to take regparms
testbench: add benchmark for SystemClock

As expected, the vsyscall mode is really very fast.
testbench: add benchmark for Schedule timectl query

Rather simple, but seems to give a result.
testbench: add benchmark for KernelInterface

Sure is slow under core2 virtualization: 40k cycles!