cmStringAlgorithms: Move generic strings join function to public API

Move `cmJoinImpl` from `cmStringAlgorithms.cxx` to the
`cmStringAlgorithms.h` as `cmJoinStrings`.  Two existing overloads are
not suitable for reverse iterators due to the hardcoded type of the
first parameter.

The signature is similar to the generic (template) `cmJoin`.  With
`enable_if` "magic", `cmJoinString` could be renamed to `cmJoin` in the
future.

Also, replace `getJoinedLength` with `std::accumulate`.
2 files changed