Add automatic differentiation to fparser

This patch adds an automatic differentiation (AD) module to fparser. It implements a class that inherits from ```FunctionParserBase<Value_t>``` (instantiation for ```double``` is  ```FunctionParserAD```) and adds the method

```
int AutoDiff(const std::string& var);
```

which takes the derivative of the parsed function with respect to variable ```var```. It should be called after setting up the function object with ::Parse(). This method can be called multiple times (with the same or different ```var``` arguments) to generate higher order derivatives.

## TODO

* Only a subset of opcodes (operators/functions) are implemented so far
 * ```+```, ```-```, ```*```, ```/```, prefix```-```
 * ```sqrt(a)```, ```pow(a,b)```, ```a^2```, ```exp(a)```
 * ```log(a)```, ```log2(a)```, ```log10(a)``` 
 * ```sin(a)```, ```cos(a)```, ```tan(a)```
 * ```asin(a)```, ```acos(a)```, ```atan(a)```
 * ```abs(a)```, ```int(a)```, ```floor(a)```, ```ceil(a)```, ```trunc(a)``` (these ignore undifferentiable points!)
 * ```hypot(a,b)```
 * Plus a few internal optimizer opcodes (```dup```, ```inv```, ```log2by```, the _reverse_ opcodes)
* Logic operators won't be implemented (unless someone tells me how differentiating them would make sense)
* ```cFetch``` _must_ still be implemented (fetches a value from an arbitrary position on the stack)
* ```cJump``` and thus ```if``` should be implemented to enable piecewise functions.
* In this PR I also re-enable the FP optimizer on OSX (it works just fine, and is essential to distill down the crazy long auto diff expressions - see example program)