Ben's code

A couple of things:
   - `fact` should give back an `Expr` (as specified in its result type: `PackratParser[Expr]`)
   - The `~>` and `<~` combinators throw away their left and right arguments, respectively. 

So, the second rule will parse a left-paren, then parse an `Expr`, then parse a right-paren. It'll result in whatever `expr` results in, so we don't need a separate action to store it.

*But*, if we wanted to represent the fact that this expression was parenthetical, then we would add to the intermediate representation a case class for parenthetical expressions; and we would add an action to this rule to create an instance of that case class.