#1544 Use strong types in PrintContainer facility
The rationale: currently there are three optional arguments respectively for the opener, the separator and the closer... and their ordering is important...
So far a template string type was used for each of them, but we could swap some and gets some really weird formatting as a result.
Now:
- The template are replaced by a std::string_view (which by itself wouldn't do as a char can't be interpreted as this type)
- Enclosed within a StrongType (so that the compiler will tell you if you make a mistake in the ordering).