ipc: validate Ipc.to

That's to say: check it against anythread and anylocalthread, which are both
disallowed.
test: ipc: test valid and invalid values for Ipc.to

Part 1 tests anythread & anylocalthread and the last thread in the kernel
range.

Part 2 tests that IPC succeeds for global and local TIDs when it should, and
fails once the peer is removed; and that wrong versions and mangled local TIDs
never succeed.

The interrupt range is left untouched; it should be tested in
interrupt_suite.c's API bit.
space: catch malformed local TIDs in space_find_local_thread()
thread: export get_local_id()

The idea is that link-time optimization will eventually inline it regardless
of module.
test: ipc: add tid_spec_from

It breaks things left and right.
ipc: fix non-presence detection in sender lookup

That's to say, this changeset affects ipc_recv_half(). Considering the
aggregate level of ugly in find_local_sender(), it's likely there'll be a
nicer data structure for this in <struct space> ere long.

Additionally, Ipc was changed to reject FromSpecifier in the kernel range;
this may not comply with the spec, but on the other hand there's no use case
for receiving from a particular kernel thread (and no "any kernel thread"
wildcard, either).
reduce bitfield horrors in <l4/types.h>

All that movzbl, four clocks each, can be substituted with a load and a mask.
So, like, what the fuck, GCC.