Generalise comma_separated_line.

Make a version comma_separate_fn, which additionally takes a callable
that converts an iterated-over value to a string.  Use that to simplify
skill_names, and also to implement the old comma_separated_line.