Updated differentiate.jl to be make finite differences based on a symbolic expression

Does doing this make more sense than putting it into finite_difference and having it called by derivative()?

```Julia
julia> differentiate(:(e^x),:(x))
:(*(^(e,x),log(e)))

julia> using Calculus

julia> differentiate(:(e^x),:(x),1.0)
2.718281828459045

julia> differentiate(:(e^x),:(x),0.0)
1.0
```

Admittedly, in its current form it messes with global variables.