Fix parsing of mixed hiding and other operators.

For example, X \ Y ||| Z. Unfortunately we cannot adjust the happy
grammar to do this since we would need to specify a different precedence
for hiding on the left of some operators than on the right (which it
doesn't let us do). Instead we walk over the AST afterwards and
re-assosicate the expressions as necessary.