differentiator: main: support higher-order derivatives.
differentiator: util-tree, main: simplify/optimize only once when taking higher-order derivatives.
util, differentiator: implement opportunistic rational arithmetic for variables, store all data in boost::any.

Now all variables hold their values in boost::any. All tree operations have been modified to
choose from floating-point arithmetic, rational arithmetic and graceful exit in case of emuty value.

Variables can be specified as floating-point, rational or bare (without value), and in runtime
the appropriate action is taken when processing each subtree. Rational arithmetic is always preferred.
differentiator: visitor-simplify: insert addsub's constant to the front.
differentiator: visitor-simplify: don't exit folding when there is no nodes; we still have to do "sign folding".
differentiator: main: do not print "Partial derivatives:" header when there is no partial derivatives to show.
differentiator: main: implement building Taylor series for arbitrary expressions.

For now only in neighborhood of 0 (Maclaurin series).
differentiator: main, node, visitor: prepare for arbitrary precision arithmetics -- work around bug/ugliness in implicit conversion.
util: variable: prepare for arbitrary precision arithmetic -- work around bug in boost or iostream.
c: prepare for arbitrary precision arithmetic and fix unnoticed bug after conversion to rational arithmetic.
util: enable arbitrary precision arithmetic.
differentiator: node: WIP: begin implementation of sorted child sets.

This allows to radically reduce computational complexity of tree transformations
(as square root, to be precise) because any two operation on two child sets can now
be linear instead of quadratic.