module Context:sig..end
init will be called once on each new type_name met during the traversal of a type.
Each time the same type is encountered again, get_wip_computation will be called.
At the end of the traversal of that particular type, set_final_computation will be
called, offering as a way to "close" the wip representation. 'a t can be mutable
(and is likely to be in practice).
After a set_final_computation is performed and return a final computation C for a
type_name, C will be memoized and returned for each further occurrences of the same
type_name inside the typerep, going further on.
type t
init calls that happen during the traversal of it.
The user of the generic functor is free to stuff there whatever context needs to be
available while creating a new value of type 'a Named.tval create : unit -> t