Added %error_reverse annotation

On a function, %error_reverse hints that the function should be run "in
reverse", i.e. as a rewrite rule from right to left, before displaying
an error message.

On a data declaration, %error_reverse means that all functions with that
type will be implicitly set as %error_reverse functions.

EFFECT is now set as %error_reverse. So in the Effects library, this
leads to much nicer messages, e.g.:

Can't solve goal
    SubList [(FILE_IO (OpenFile m))] [(FILE_IO ()),STDIO,
    ('Count ::: (STATE Int))]

...rather than the fully normalised versions we used to see.