Maybe I should first explain a motivation for that. Depending on error type, numbers we want to know are different. As you can see in error classes, if an error type is ErrorAbsDeltaXNorm1, we want a log output like
```c++
INFO("-> %d: ||dx||_1=%1.3e", itr_count, err);
```
whereas the output for ErrorRelDeltaXNormInf should be 
```c++
INFO("-> %d: ||dx||_inf=%1.3e, ||x||_inf=%1.3e, ||dx||/||x||=%1.3e", itr_count, abs_mnrom_dx, abs_mnorm_x, rel_mnorm_dx);
```
Since error type should be customisable, log output should also be flexibly customisable.

To have flexible log output depending on chosen error type, we have the following options
- (A) Error type classes create std::string for output, which contains only error information, and pass it to Picard class. Picard class makes a final output together with current iteration count.
- (B) Picard class pass iteration counts to Error type class. Error type class makes a final output including numbers of interest.

Current implementation follows (B). But maybe (A) is better separating responsibility of Picard class and individual error classes.