**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)


raise NotImplementedError()
    @property
    def label(self) -> str | None:
        tg = self.task_group
        if tg and tg.node_id and tg.prefix_group_id:
            
            return self.node_id[len(tg.node_id) + 1 :]
        return self.node_id
    start_date: pendulum.DateTime | None
    end_date: pendulum.DateTime | None
    upstream_task_ids: set[str]
    downstream_task_ids: set[str]
    def has_dag(self) -> bool:
        return self.dag is not None
    @property
    def dag_id(self) -> str:
        """Returns dag id if it has one or an adhoc/meaningless ID"""
        if self.dag:
            return self.dag.dag_id
        return "_in_memory_dag_"
    @property
    def log(self) -> Logger:
        raise NotImplementedError()
    @property
    @abstractmethod
    def roots(self) -> Sequence[DAGNode]:
        raise NotImplementedError()
    @property
    @abstractmethod
    def leaves(self) -> Sequence[DAGNode]: