Fix parse error on (||) and (&&)

Expressions with logical-and or logical-or did not parse before because the bitwise-or and bitwise-and matched first, putting the parser down a path that does not expect a second & or |. Examples of non-parsing expressions include:

    true || false
    4 < 2 && 5 < 1

This fix ensures that (&) and (|) only match if they are not followed immediately by the same character.

I think this fix could probably be refactored in some nicer way, but we are using this GLSL parser in Elm ([like this](http://elm-lang.org/edit/examples/WebGL/Thwomp.elm)) and would like to get a fix out quickly. What do you think?