Some fixes

Hi,

In some cases subtype fails to solve "a^ = a" where "a^" is existential and "a" is universal. For example:
```
print $ evalNameGen $ subtype mempty (tforall "a" $ tvar"a") (tforall "a" $ tvar"a") -- throws an error
```
The reason is that subtype checks "<:forallL" before "<:forallR", therefore the universal variables introduced by "<:forallR" are not in the visible context for the existentials. 

Switching the order of the two cases solves the issue.