Added a macro to print core::Expr

Modified the module::Expr to be have constructors identical to core::Expr making it possible to use write_core_expr for that function as well
Overhauled the Show for types

Type now tracks the precedence of the enclosing type to show where parentheses needs to be emitted around types
Removed dead code