Source sweep: Use cmStrCat for string concatenation

This patch is generated by a python script that uses regular expressions to
search for string concatenation patterns of the kind

```
std::string str = <ARG0>;
str += <ARG1>;
str += <ARG2>;
...
```

and replaces them with a single `cmStrCat` call

```
std::string str = cmStrCat(<ARG0>, <ARG1>, <ARG2>, ...);
```

If any `<ARGX>` is itself a concatenated string of the kind

```
a + b + c + ...;
```

then `<ARGX>` is split into multiple arguments for the `cmStrCat` call.

If there's a sequence of literals in the `<ARGX>`, then all literals in the
sequence are concatenated and merged into a single literal argument for
the `cmStrCat` call.
7 jobs for source_sweep_cmStrCat
Status Job ID Name Coverage
  External
passed cdash

passed cmake-dash3win10-windows-release-ninja

00:18:07

passed cmake-minoc-linux-release-lint-iwyu-tidy

00:05:54

failed cmake-moonshade-osx-debug-ninja

00:00:49

failed cmake-moonshade-osx-release-makefiles

00:01:21

passed cmake-terfin-windows-release-vs2019

00:38:01

passed ghostflow-check-master