Rename DType -> DTypeDef, and add corresponding constructor.
Fix missing refactorings for DTypeDef.
Add while-loop expression forms for imperative embeddings.
Add EImplementationType annotation for additional type information.
Add initial rewrite-rule implementation for expressions.

Non-exhaustive pattern-matches need to be handled by throwing an error for cases
which couldn't possibly have typechecked.