String metric and other tests

- add `StringMetric`. 
  - Obvious use is a string-valued output
  - Another use is formatted variable length lists of things that can be parsed later, such as per-node values or per-iteration/stage values.
  - I did not use `SimpleMetric` because too many methods would have to be specialized
- also added tests for `merge()` for all metric types