Strengthen the semantics for the conLang proof

Add a check to the modLang prompt semantics that
- a prompt with no module name has at most 1 declaration
- the module names on the type and exn declarations in a prompt are the
  same as the prompt's module name

Add a new whole_prog level evaluate above the prog level that checks
that there are no duplicate modules or top-level types.

The transformation to conLang relies on these properties.