Rewrite of FParser automatic differentiation

Addressing #397 this new AutoDiff implementation does more with less (370 lines fewer) code and is a lot more readable. 

I've added a test program that compares the derivatives of a bunch of expressions to finite differences.