Coverity detected a potential `bad_cast` due to facets in iostreams and
`bad_array_new_length` during `vector` construction.
Catch those too with the more general `std::exception` although they are
very likely false positives / can never occur.
Every test had the same pattern of a main catching exceptions and
returning 0 or 1 based on that. Factor that into test.hpp.
As most code in test.hpp is only executed on failure and those should
not occur this file is excluded from coverage.
Finally test.hpp is included last and the header to test first
consistently to check for self-sufficient includes.
Make some functions protected to derive a test class from stackstring
which can be used to detect wether a stack or heap value is used
Fix or silence issues from static analyser findings
Double-check and handle surrogates in iostream
Run multiple times and take mean speed
Present results in a table for easier comparison
Add some tricks to avoid optimization reordering stuff that breaks the benchmark