Add more operators with different precedence levels

In the lexer, operator tokens now have type "Op Int String" where
the Int is the precedence of the operator and the string is the
name. E"*" yields (Op 1 "*") and "+" yields (Op 2 "+"). Added a
number of new operators (in lexer) with differing precedence.

In the parser, expression parsing no supports arbitrary precedence
levels, rather than the previous two hard-coded levels.