Further update CheriBSD kernel CCall implementation for CHERI ISAv3:

- We no longer require the SEAL permission to be set on $c1
- We now do require that $c2 not have the EXECUTE permission
- We no longer do a PC+4 check, but we do check that !(offset >= length)

While here, rename tag check exception cases from 'invalid' to 'untagged' to
better reflect a gradual adoption of the idea that untagged values in the
capability register file are valid but not dereferenceable.
Type capabilities must have a length of at least 1, so use a lenth of 1
instead of 0.
We can no longer use full virtual addresses as types due to the 24-bit
limit on the new 'otype' field; instead of using pointers to data
structures for types, add an explicit, and extremely simple, type
allocator.  Use this for the CHERI fd, system, and sandbox classes.

Fix a sizeof() bug caught by bounds checking: sizeof(*ptrtype) not
sizeof(ptrtype).
Make cheri_type.h public so that libcheri applications can allocate their
own class types if needed (e.g., cheritest).
Use the libcheri type allocator for cheritest's custom CCall/CReturn
tests, rather than a class pointer that doesn't fit in the 24-bit
type limit in CHERI ISAv3.
Update CCall to use cs.offset for the initial $pc in the sandbox as
specified in CHERI ISAv3, rather than calculating a $pc from cs.base
and cs.type as done in previous versions of the CHERI ISA.
Remove the now-unneeded (and in some cases harmful) use of CSetType to
restore KDC's type after unsealing $c1 and $c2 during CCall.

Improve comments in CCall.

Update copyright.