Granted, most users of `defgroup', `defcustom', and `defface' will not need
to test whether a given group exists, but some will. I still have the
question whether we shouldn't have a function `group-p'.
IIRC I've looked into it at some point. The problem is that currently,
the data necessary to write custom-group-p is absent.
`customize-read-group' uses the following predicate for completion
purposes:
(lambda (symbol)
(or (and (get symbol 'custom-loads)
(not (get symbol 'custom-autoload)))
(get symbol 'custom-group)))
So we could use the above as the definition of custom-group-p, but IIRC
it's not 100% reliable/correct, and the lack of comments explaining why
we check (and (get symbol 'custom-loads) (not (get symbol 'custom-autoload)))
is also a significant problem.