testbench: thread: make tid_stomp narrower

This changeset removes the test for modification of a thread ID's version bits
while referencing the address space with the ID that's being modified. That
ought to be valid, but tid_stomp isn't the right place to test it. (and I'm
fairly sure that sys_threadcontrol() doesn't do the right thing, either.)
move get_thread_exh() into thread.c, and rename it

The new name is thread_get_exnh(), like the earlier thread_get_pager().
thread: export resolve_tid_spec(), use it all over

It replaces many calls to thread_find() and space_find_local_thread().
space: change space_find() to care about thread versions

Oops.
clean up the rest of thread_find()

The one in scheduler_loop() is entirely legit in the sense that
*scheduler_mr1 can never be a local thread ID.

The redirector TID validation (i.e. that it must exist) in sys_spacecontrol()
isn't required. But there should be a check that it's not an interrupt or
kernel thread.

Finally thread_find() was flattened down to just the htable_get() call and its
parameter computations.
thread: tidy up thread_{new,destroy}(), unify TCR accessors

And replace the conditional call to thread_get_utcb() with an assert, because
every call site passes a valid UTCB pointer.