Check for cycles in unification results

Fixes #1754.
Remove Type* on type of (.)

We should leave this sort of thing until uniqueness types are more
mature and we've experimented more outside the Prelude.
Fixes #1777
Move Pair/Sigma into Builtins namespace

Fixes #1775 (but there is still a related problem to address too,
being #1776)
Check datatypes are not redefined

We were checking, but only seeing if the type constructor was the same,
which is not enough. Fixes #1776.
Add proper namespace to class instances

Fixes #1779
Remove -Werror in Output.hs due to ErrorT

As far as I can tell, we can't replace ErrorT with ExceptT yet because
there's a missing MonadException instance in Haskeline. Also, the
dependencies we have set are causing a build failure on travis due to
the -Werror.

Proper fixes welcome! This is noted in issue #1780
sharingan