Calc expression node

Not sure how in depth a look this needs. Feel free to take as deep/shallow a look as you like.

Some changes in behavior to Calc app.  In particular:
- (1 + 2) and (2 + 1) are now treated as different. We'll give you an error message telling you that they're equivalent, but not the same.
- We'll animate both the user and answer expression. When collapsing a leaf expression where they differ, we'll stop evaluating and give them a continue button.
- A significant code change is to have ExpressionNode (formerly Expression) also handle numbers, this makes handling leaves easier as left/right are always either null or an ExpressionNode.
I would love to use goog.dom.classes.add and goog.dom.classes.remove for this sort of thing, however I gave up on it when it became unclear whether we wanted blockly-apps to depend on google closure through Blockly. I would say leaving it like this is fine for now, so, just FYI.