Currently when you define a teardown

e.g. 

```
@teardown(on_failure_fail_dagrun=True)
def my_teardown():
    ...
```

You can not change this when you instantiate the task

e.g. with 

```
my_teardown.override(on_failure_fail_dagrun=True)()
```

I don't think this is good because if you define a reusable taskflow function then it might depend on the context.

#
#
#
from __future__ import annotations
import pytest
from airflow import AirflowException
from airflow.decorators import setup, task, task_group, teardown
from airflow.decorators.setup_teardown import context_wrapper
from airflow.operators.bash import BashOperator
class TestSetupTearDownTask:
    def test_marking_functions_as_setup_task(self, dag_maker):
        @setup
        def mytask():
            print("I am a setup task")
        with dag_maker() as dag:
            mytask()
        assert len(dag.task_group.children) == 1
        setup_task = dag.task_group.children["mytask"]
        assert setup_task.is_setup
    def test_marking_functions_as_teardown_task(self, dag_maker):