Initial implementation of struct-type contract generation.

This is unsound. When importing an untyped struct-type that is used reflectively from typed code this will blame the typed module, but have an error message saying that the `struct-type was used reflectively in untyped code`.