Expression Manipulator v0.3 (differentiation)
The only real difference is the fixing of a clear_extra() bug (and features), and the adding of a derive() function.
clear_extra() removes excess terms containing a zero factor, and factors containing excessive ones.
To take the derivative:
For some reason, another extra term is attached to the result, and I can't simplify it, but it's still the correct one.
Right now powers are assumed to be constants. Later on when I add the ability to take logs, I'll work with variable powers. Also later on will be simple substitutions such as sin'(x) = cos(x)