Return a flat list of all GO IDs in grouping object.

           All GO IDs:
               * header GO IDs that are not user GO IDs
               * user GO IDs that are under header GOs
               * user GO IDs that are header GOs in groups containing no other user GO IDs

def get_gos_all(self):
        """Return a flat list of all GO IDs in grouping object.

           All GO IDs:
               * header GO IDs that are not user GO IDs
               * user GO IDs that are under header GOs
               * user GO IDs that are header GOs in groups containing no other user GO IDs
        """
        gos_all = set()
        # Get:
        #   * Header GO IDs that are not user GO IDs
        #   * User GO IDs that are under header GOs
        for hdrgo, usrgos in self.hdrgo2usrgos.items():
            gos_all.add(hdrgo)
            gos_all |= usrgos
        # User GO IDs that are header GOs in groups containing no other user GO IDs
        gos_all |= self.hdrgo_is_usrgo
        assert gos_all == self.usrgos.union(set(self.hdrgo2usrgos.keys()))
        assert len(self.usrgos.difference(gos_all)) == 0, \
            "GROUPER ERROR: {GOs}".format(GOs=self.usrgos.difference(gos_all))
        return gos_all