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 must admit, grouping my tests in ways that I can make Englishy sounding sentences feels a little bit uncomfortable to me. I instead approach my tests as "here is a function I want to write a bunch of tests for". I think the proper way to do this with the it/describe syntax would actually be to have an individual it for each one of the little chunks of code I currently have within my it.

I see a couple possible solutions:
- Leave it how it is. There's some weirdness with using describe/it, but not actually forming English phrases
- Prepend my descriptions with "it works when i call", so that I have, for example it("works when i call ctor/toString"). makes things somewhat Englishy
- actually make its for each little clump
- use a different assertion library that doesnt use describe/it (mocha supports this)

Of these, i don't really want to do 3 or 4. I'm willing to do 2 if people care, but I'd prefer to just leave it how it is if people don't have strong opinions. thoughts?