**Description**

Currently `BaseOperator` and `XComArgs` implements the same logic of `__lshift__`, `__rshift__` and others "chain" operations (`>>`, `<<`). It seems resonable to abstract this logic into `TaskMixin` to introduce some DRYness especially because the new concept of `TaskGroup` will also implement the same methods.

**Use case / motivation**

Limit duplication of logic.

**Related Issues**

https://github.com/apache/airflow/pull/10827#issuecomment-691927501
#10153 

airflow/example_dags/example_xcomargs.py
#
#
#
"""Example DAG demonstrating the usage of the XComArgs."""
import logging
from airflow import DAG
from airflow.operators.bash import BashOperator
from airflow.operators.python import PythonOperator, get_current_context, task
from airflow.utils.dates import days_ago
log = logging.getLogger(__name__)
def generate_value():
    """Dummy function"""
    return "Bring me a shrubbery!"
@task
def print_value(value):