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


"""
        Called if we're not the "main" side of a relationship; we still run the
        same logic, though.
        """
        if upstream:
            self.set_upstream(other, chain=False)
        else:
            self.set_downstream(other, chain=False)
    def add_edge_info(self, dag, upstream_id: str, downstream_id: str):
        """
        Adds or updates task info on the DAG for this specific pair of tasks.
        Called either from our relationship trigger methods above, or directly
        by set_upstream/set_downstream in operators.
        """
        dag.set_edge_info(upstream_id, downstream_id, {"label": self.label})
def Label(label: str):
    """Creates an EdgeModifier that sets a human-readable label on the edge."""
    return EdgeModifier(label=label)