Add rename pass to desugar
Rename data constructors
No need to check for aliased constructors anymore
Disallow duplicate definitions in scope
Don't need to carry NameKind for dcons anymore
Just use Qualified name for dcons
Type renaming mostly working
Fix remaining type rename cases
Delinting
TypeDeclarationKind now unnecessary

Although the handling of duplicate definitions within a module needs
refining
Delinting again
Remove redundant canonicalizeType
Use extM instead of chaining everywhereM
Use Either instead of error
Deal with data constructors from explicit imports
Tidy up
Improve explicit import handling
Merge remote-tracking branch 'garyb/renaming' into renaming

Conflicts:
	prelude/prelude.purs
Fix Prelude after merge
Adding some comments and type signatures to aid my understanding a little