Added the ability to add type signatures on expressions

Also added the match_() function which works like unify but only allows for updating of variables one way. Changed unification with types on type declarations to use match since type signatures should not be specialized further.
Changed the fields typeDecl and arity in module::Binding

TypeDeclaration -> Qualified<Type>.
arity was removed since that is implicit through arguments.len()