Refactor printing feature.

In order to be more OO the IReport is no longer responsible for
providing its data to the printer, but is directly responsible
for being printed using the passed IPrinter which is called with
IReportInfo parameter implemented by the Report.
Move the number of iterations from IProcedure to ITestSuit.

The patch moves the place where the number of iteration is passed
from IProcedure to ITestSuit. It is done using the abstraction
ITimes which is responsible for executing the IRoutine in the loop.
Support minimum execution time.

The patch introduces the feature called minimum execution time,
which ensures that in each the executed case group all single
result has execution time greater that one second. If the time
is lower the times parameter is increased to reach expected
minimum execution times. It seems that using minimum execution
times leads to better comparision results.