**Apache Airflow version**: 2.1.0

**What happened**:

Using a Label infront of a TaskGroup breaks task dependencies, as tasks before the TaskGroup will now point to the last task in the TaskGroup.

**What you expected to happen**:

Task dependencies with or without Labels should be the same (and preferably the Label should be visible outside of the TaskGroup).
Behavior without a Label is as follows:

```python
with TaskGroup("tg1", tooltip="Tasks related to task group") as tg1:
        DummyOperator(task_id="b") >> DummyOperator(task_id="c")

DummyOperator(task_id="a") >> tg1
```
![without Taskgroup](https://user-images.githubusercontent.com/35238779/128502690-58b31577-91d7-4b5c-b348-4779c9286958.png)

**How to reproduce it**:

```python
with TaskGroup("tg1", tooltip="Tasks related to task group") as tg1:
        DummyOperator(task_id="b") >> DummyOperator(task_id="c")

    DummyOperator(task_id="a") >> Label("testlabel") >> tg1
```
![with TaskGroup](https://user-images.githubusercontent.com/35238779/128502758-5252b7e7-7c30-424a-ac3a-3f9a99b0a805.png)


super().__init__(**kwargs)
        self._expand_input = expand_input
        for op, _ in expand_input.iter_references():
            self.set_upstream(op)
    def iter_mapped_dependencies(self) -> Iterator[Operator]:
        """Upstream dependencies that provide XComs used by this mapped task group."""
        from airflow.models.xcom_arg import XComArg
        for op, _ in XComArg.iter_xcom_references(self._expand_input):
            yield op
    @cache
    def get_parse_time_mapped_ti_count(self) -> int:
        """Number of instances a task in this group should be mapped to, when a DAG run is created.
        This only considers literal mapped arguments, and would return *None*
        when any non-literal values are used for mapping.
        If this group is inside mapped task groups, all the nested counts are
        multiplied and accounted.
        :meta private:
        :raise NotFullyPopulated: If any non-literal mapped arguments are encountered.
        :return: The total number of mapped instances each task should have.
        """
        return functools.reduce(
            operator.mul,
            (g._expand_input.get_parse_time_mapped_ti_count() for g in self.iter_mapped_task_groups()),
        )
    def get_mapped_ti_count(self, run_id: str, *, session: Session) -> int: