Add error and explanation for infinite type aliases
Add an occurs check to finally resolve #294

Add it in the more clever location suggested by Pottier and Remy. Also
change the style of error messages to get rid of the expected/actual
problem for now, and make hints read more smoothly.