Issue better error messages in use_var and def_var.
Issue better error messages in use_var and def_var.

Include the name of the variable when diagnosing uses and defs of
undeclared variables. And, add an assert to def_var to check that the
declared type of a variable matches the value type of the def.

With this change, `Variable` implementations must now implement `Debug`.

stoklund/cretonne,stoklund/cretonne,stoklund/cretonne