implement groups configuration and ui

groups can be defined in config that list jobs and resources.

in the UI, the list of groups will be shown above the pipeline; they can
be clicked to filter the pipeline down to that group.

jobs or resources that do not belong to any group are shown by default,
and removed only if they have no connecting nodes in the resulting
graph. this allows groups to be defined minimally, rather than having to
maintain a list of all relevant jobs/resources.

[#79154122]