**Apache Airflow version**: 2.0.0a1

**What happened**:

On my dev environment I have a lot of DAG runs with failed tasks, where the *downstream* task instances then have been set to `upstream_failed`. The scheduler is now refusing to schedule more instances for such DAGs.

The scheduler looks for such task instances that are not in the `State.finished` set:

https://github.com/apache/airflow/blob/db3fe0926bb75008311eed804052c90bfa912424/airflow/jobs/scheduler_job.py#L1482-L1488

However, `State.finished` is currently not a proper inverse of *running* states, it only includes success, failed, and skipped:

https://github.com/apache/airflow/blob/db3fe0926bb75008311eed804052c90bfa912424/airflow/utils/state.py#L110-L114

What is missing is the task instance `upstream_failed` state, so currently my log is being filled (very rapidly) with:

```
[2020-10-18 13:22:18,503] {{scheduler_job.py:1658}} INFO - DAG test_dag already has 26 active runs, not queuing any more tasks
```

Those 26 'active runs' are simply dag runs that failed and have 'upstream_failed' task instances.

Either `upstream_failed` should be added to `State.finished`, or the Scheduler task instance test should explicitly take that state into account.
airflow/models/dagrun.py
:type session: Session
        :param execute_callbacks: Should dag callbacks (success/failure, SLA etc) be invoked
            directly (default: true) or recorded as a pending request in the ``callback`` property
        :type execute_callbacks: bool
        :return: Tuple containing tis that can be scheduled in the current loop & `callback` that
            needs to be executed
        """
        
        callback: Optional[callback_requests.DagCallbackRequest] = None
        start_dttm = timezone.utcnow()
        self.last_scheduling_decision = start_dttm
        dag = self.get_dag()
        ready_tis: List[TI] = []
        tis = list(self.get_task_instances(session=session, state=State.task_states + (State.SHUTDOWN,)))
        self.log.debug("number of tis tasks for %s: %s task(s)", self, len(tis))
        for ti in tis:
            ti.task = dag.get_task(ti.task_id)
        unfinished_tasks = [t for t in tis if t.state in State.unfinished]
        finished_tasks = [t for t in tis if t.state in State.finished | {State.UPSTREAM_FAILED}]
        none_depends_on_past = all(not t.task.depends_on_past for t in unfinished_tasks)
        none_task_concurrency = all(t.task.task_concurrency is None for t in unfinished_tasks)
        if unfinished_tasks:
            scheduleable_tasks = [ut for ut in unfinished_tasks if ut.state in SCHEDULEABLE_STATES]
            self.log.debug(
                "number of scheduleable tasks for %s: %s task(s)",
                self, len(scheduleable_tasks))
            ready_tis, changed_tis = self._get_ready_tis(scheduleable_tasks, finished_tasks, session)
            self.log.debug("ready tis length for %s: %s task(s)", self, len(ready_tis))
            if none_depends_on_past and none_task_concurrency: