Make timeout->cpu immutable
We ensure timeout->cpu is only changed in timeout_register(),
which by its nature is externally synchronized with timeout_unregister(),
and internally synchronized with clock(). Thus in both those contexts,
timeout->cpu is always a valid constant pointing to the CPU of last
call to timeout_register().
Doing so removes the need for synchronization using timeout->lock.
Instead, timeout->link is synchronized by timeout->cpu->timeoutlock,
and all other fields of timeout_t are also immutable outside
timeout_register(), which means they are safely synchronized by
a combination of timeout->cpu->timoutlock and external sychronization
of timeout_register/unregister.