Calc work

A whole bunch of calc work.
The two major things
- Support for variables/functions

![image](https://cloud.githubusercontent.com/assets/1767466/5511332/ffe1146c-8780-11e4-9def-474c1fb65d9e.png)

- Animate expressions showing a history instead of in place
  - only animate if successful, and if no variables/functions

![image](https://cloud.githubusercontent.com/assets/1767466/5511319/ced56b84-8780-11e4-94cd-3a6bcd917c61.png)

I did do a bunch of work towards also animating variables/functions until I realized we'd decided not to do that.

There is a lot of change in here, and it's quite likely I'm introducing new bugs. The good news is there's low likelihood of breaking anything that isn't calc.

I have a bunch of todos in code still too. I open a bug telling myself to address them.

I'm not sure there's any particular area that deserves most code review attention, as there's quite a bit of change here.  Feel free to skim if you like. Not sure if it makes more sense to check in before the holidays to get it in, or to just wait til January to reduce risk of regression.
Could make this line use JSDoc-style `@returns` here