Issue:
`custom_headers` is available as an optional keyword argument in `build_mime_message` but it is not exposed in `send_email` or `send_email_smtp`. This prevents using custom headers with the email operator when using the default smtp backend. 

https://github.com/apache/airflow/blob/8e2a0bc2e39aeaf15b409bbfa8ac0c85aa873815/airflow/utils/email.py#L105-L116

Expected:
`send_email` should take optional key word argument `custom_headers` and pass it to `send_email_smtp` if that is the selected backend. 




tests/utils/test_email.py
def test_get_email_address_single_email(self):
        emails_string = 'test1@example.com'
        assert get_email_address_list(emails_string) == [emails_string]
    def test_get_email_address_comma_sep_string(self):
        emails_string = 'test1@example.com, test2@example.com'
        assert get_email_address_list(emails_string) == EMAILS
    def test_get_email_address_colon_sep_string(self):
        emails_string = 'test1@example.com; test2@example.com'
        assert get_email_address_list(emails_string) == EMAILS
    def test_get_email_address_list(self):
        emails_list = ['test1@example.com', 'test2@example.com']
        assert get_email_address_list(emails_list) == EMAILS
    def test_get_email_address_tuple(self):
        emails_tuple = ('test1@example.com', 'test2@example.com')
        assert get_email_address_list(emails_tuple) == EMAILS
    def test_get_email_address_invalid_type(self):
        emails_string = 1
        with pytest.raises(TypeError):
            get_email_address_list(emails_string)
    def test_get_email_address_invalid_type_in_iterable(self):
        emails_list = ['test1@example.com', 2]
        with pytest.raises(TypeError):
            get_email_address_list(emails_list)
    def setUp(self):
        conf.remove_option('email', 'EMAIL_BACKEND')
        conf.remove_option('email', 'EMAIL_CONN_ID')
    @mock.patch('airflow.utils.email.send_email')
    def test_default_backend(self, mock_send_email):