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


tests/operators/test_branch_operator.py
def choose_branch(self, context):
        return 'branch_1'
class ChooseBranchOneTwo(BaseBranchOperator):
    def choose_branch(self, context):
        return ['branch_1', 'branch_2']
class TestBranchOperator(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        super().setUpClass()
        with create_session() as session:
            session.query(DagRun).delete()
            session.query(TI).delete()
    def setUp(self):
        self.dag = DAG(
            'branch_operator_test',
            default_args={'owner': 'airflow', 'start_date': DEFAULT_DATE},
            schedule_interval=INTERVAL,
        )
        self.branch_1 = DummyOperator(task_id='branch_1', dag=self.dag)
        self.branch_2 = DummyOperator(task_id='branch_2', dag=self.dag)
        self.branch_3 = None
        self.branch_op = None
    def tearDown(self):