VS: Avoid empty source groups in some cases (#3474)

Teach the WriteGroup method return true if a group or any of its
children have source files.  Have children write their output to a
temporay cmOStringStream.  Add it to the real output only if not empty.
Merge topic 'vs7-empty-groups' into next

545fdec VS: Avoid empty source groups in some cases (#3474)