Register builds a pp function from a to_string function, and adds the
module_name ^ ".pp" to the list of pretty printers. The idea is to statically
guarantee that one has the desired pp function at the same point where the name is
added.
M : sig ... endval pp : Caml.Format.formatter ‑> t ‑> unit