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.
(1) is fine with me. I don't see any value in (2) -- seems about as good as writing a descriptive comment per test case. I might be more in favor of 3 or 4 if I saw an example of how awesome js tests can be when they read like english.