**Description**
The `airflow.models.baseoperator.chain()` is a very useful and convenient way to add sequential task dependencies in DAGs but the function only supports tasks of a `BaseOperator` type.

**Use case / motivation**
Users who create tasks via the `@task` decorator will not be able to use the `chain()` function to apply sequential dependencies that do not share an `XComArg` implicit dependency.

**Are you willing to submit a PR?**
Absolutely. 🚀 

**Related Issues**
None

tests/models/test_baseoperator.py
with pytest.raises(TypeError):
            fail > task1
        with pytest.raises(TypeError):
            task1 > fail
        with pytest.raises(TypeError):
            fail | task1
        with pytest.raises(TypeError):
            task1 | fail
        task3 = DummyOperator(task_id="op3", dag=dag)
        extra = File(url="extra")
        [inlet, extra] > task3
        assert task3.get_inlet_defs() == [inlet, extra]
        task1.supports_lineage = False
        with pytest.raises(ValueError):
            task1 | task3
        assert task2.supports_lineage is False
        task2 | task3
        assert len(task3.get_inlet_defs()) == 3
        task4 = DummyOperator(task_id="op4", dag=dag)
        task4 > [inlet, outlet, extra]
        assert task4.get_outlet_defs() == [inlet, outlet, extra]
    def test_warnings_are_properly_propagated(self):
        with pytest.warns(DeprecationWarning) as warnings:
            DeprecatedOperator(task_id="test")
            assert len(warnings) == 1
            warning = warnings[0]
            
            
            assert warning.filename == __file__
class CustomOp(DummyOperator):