differentiator: util-tree: simplify expression after taking each differential in differentiate().
differentiator: visitor-simplify: implement simplification of a sum of fractions.

A sum of fractions is brought to its common denominator and transformed into a
fraction whose numerator is a sum.

a/b + c = (a+bc)/b

This allows to efficiently simplify the expression by expanding products by
distributive law of multiplication. (Next optimization.)
differentiator: visitor-simplify: implement product expansion by distributive law.

A product of one or more addsub nodes (maybe interleaved with other types of nodes)
is expanded into an addsub node of products.

(a+b)(c+d) = ac + ad + bc + bd