Refactoring of parse expression method

This version will produce an abstract syntax tree while enforcing
operator precedence with the unary operators '-' and '!' holding the
highest precedence. The next step is to clean up the code for parsing
statements.