The abstract class BenchmarkUnit is a base class for benchmark units.
It allows to measure the benchmark execution time for a number of runs.
Also it keep information of the unit precedence during the run.
The class RunInfo is a holder for such benchmark run information as
execution time and the number of runs.
The class BenckmarkInfo is a holder for benchmark information for several executions.
It is based on RunInfo. The class provides functions for average run time and
mean-square deviation for run times.
The class Benchmark opertaes with a collection of BenchmarkUnits. It arranges them
according to their precedence, executes them, and collects the timing information.