Added cycle-detection validation.
Added working lazy-binding.
Added more tests.
Fixed a stupid bug getting keys for types.
Added a stub of a codegen plugin.  Next step: a build step to generate
code.