Make module signature lazy

Rules (ToBeDocumented):
- introduce laziness only for substitutions,
- notably, never in the typer.

Benefits:
- Stay binary compatible with ocaml marshalled environment.
  Only reading, if we ever need writing:
  - make sure all lazy are forced before writing (in particular, prevent
    marashalling of closures),
  - make sure all forwarded tags are short-circuited (-> it should be
    the case given the only lazy values are signature blocks)
- Module opening is now almost free!