**Apache Airflow version**: 2.0.0

**Kubernetes version (if you are using kubernetes)** (use `kubectl version`):
Not relevant 

**Environment**:
Not relevant 

**What happened**:

BranchPythonOperator performs xcom push by default since this is the behavior of PythonOperator.
However BaseBranchOperator doesn't do xcom push.

Note: It's impossible to push to xcom manually because the BaseBranchOperator has no return in it's execute method. So even when using `do_xcom_push=True` it won't help 
https://github.com/apache/airflow/blob/master/airflow/operators/branch.py#L52


**What you expected to happen**:
BaseBranchOperator to do xcom push of the branch it choose to follow as the default or at least to support the parameter of `do_xcom_push=True`


airflow/operators/branch.py
#
#
#
"""Branching operators"""
from typing import Dict, Iterable, Union
from airflow.models import BaseOperator
from airflow.models.skipmixin import SkipMixin
class BaseBranchOperator(BaseOperator, SkipMixin):
    """
    This is a base class for creating operators with branching functionality,
    similarly to BranchPythonOperator.
    Users should subclass this operator and implement the function
    `choose_branch(self, context)`. This should run whatever business logic
    is needed to determine the branch, and return either the task_id for
    a single task (as a str) or a list of task_ids.
    The operator will continue with the returned task_id(s), and all other
    tasks directly downstream of this operator will be skipped.
    """
    def choose_branch(self, context: Dict) -> Union[str, Iterable[str]]:
        """
        Subclasses should implement this, running whatever logic is
        necessary to choose a branch and returning a task_id or list of
        task_ids.
        :param context: Context dictionary as passed to execute()
        :type context: dict
        """
        raise NotImplementedError
    def execute(self, context: Dict):
        self.skip_all_except(context['ti'], self.choose_branch(context))