move stray `rackunit` module
raco pkg: handle bad `collection` strings

Also, add `setup/collection-name`, which provides functions for
checking collection-name syntax.

Closes PR 13886
raco setup: fix `info-domain`, first

That way, if you interrupt a `raco setup`, then programs that rely
on a directory of "info.rkt" mappings are more likely to work.
raco pkg {install,update}: add `--checksum` argument

The `--checksum` argument's main use is that it lets you pick a specific
commit from a GitHub repository. More generally, it lets you simulate
a package-catalog result, which includes a checksum.

Also, adjust checking of downloaded checksums to ensure that they
match the expected checksum, as predicted by a package catalog or
by the `--checksum` argument.
raco pkg: work with git tags as well as branches
paco pkg: allow a commit id to be used in a GitHub reference

Allow a commit id in place of a branch or tag.
Add package serialize-cstruct-lib for cpointer serialization

* define-serializable-cstruct is a combination of serializable-struct and define-cstruct.
  It defines serialize and deserialize functions for a limited subset of cstructs, that
  may contain primitive types, arrays, other serializable cstructs embedded or via pointer.
  Cases handled include: self-referencing cstructs, cyclic cstructs and shared pointers
* Tests and documentation are included