ExprRandom: Random expression generator

Introduce `ExprRandom`, a customisable class (via class extension) for expression generation.

This feature could serve as a basis for testing, fuzzing, or quick demo setup purposes.

In default mode, `ExprRandom` produces an expression with a perfect tree graph. In this graph, some nodes are share (some elements are re-used) to mimic a more realistic behavior.

An example is provided inside `example/expression` path.