Recursive trim empty grouping nodes

When you have nested TrimEmptyGroupingNodesVisibilityProvider isVisible
needs  to look at the visibility of child nodes not just for existence.