Shift responsibility for clearing portions of the general-purpose and
capability register files from userspace invoke/stub code to the
kernel's CCall/CReturn implementations.  This has upsides and downsides.

On the positive side, it avoids redundant clearing that will often be
required by both the caller and callee: by doing it in the TCB, both
sides can safely assume that it has happened, rather than doing it
twice.

On a less positive side, it encodes assumptions about the n64 and
capability ABI in the kernel exception handler, which had previously
been avoided.  Also, it means that the common CCall/CReturn routines
encode assumptions about mutual distrust, whereas with clearing
implemented in userspace, we can more easily provide asymmetric
distrust.

Regardless, the compiler and runtime remain responsible for some amount
of register clearing: unused argument registers and return-value
registers must be cleared by the compiler as only it knows what is
actually unused by a function prototype.

This model requires somewhat more work when invoking hand-crafted
CCall/CReturn test cases, so lift some amount of register aving and
restoring from libcheri.

libcheri and csu/cheri are updated to remove previously present
clearing.