Added more support for differentiation

Added derivative for x^x (based on general rule for (f(x)^g(x))’)
Added derivatives for some unary functions
Improved tree output
TODO: tree simplification rules