**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/ti_deps/dep_context.py
"""
    A base class for contexts that specifies which dependencies should be evaluated in
    the context for a task instance to satisfy the requirements of the context. Also
    stores state related to the context that can be used by dependency classes.
    For example there could be a SomeRunContext that subclasses this class which has
    dependencies for:
    - Making sure there are slots available on the infrastructure to run the task instance
    - A task-instance's task-specific dependencies are met (e.g. the previous task
      instance completed successfully)
    - ...
    :param deps: The context-specific dependencies that need to be evaluated for a
        task instance to run in this execution context.
    :type deps: set(airflow.ti_deps.deps.base_ti_dep.BaseTIDep)
    :param flag_upstream_failed: This is a hack to generate the upstream_failed state
        creation while checking to see whether the task instance is runnable. It was the
        shortest path to add the feature. This is bad since this class should be pure (no
        side effects).
    :type flag_upstream_failed: bool
    :param ignore_all_deps: Whether or not the context should ignore all ignoreable
        dependencies. Overrides the other ignore_* parameters
    :type ignore_all_deps: bool
    :param ignore_depends_on_past: Ignore depends_on_past parameter of DAGs (e.g. for
        Backfills)
    :type ignore_depends_on_past: bool
    :param ignore_in_retry_period: Ignore the retry period for task instances
    :type ignore_in_retry_period: bool
    :param ignore_in_reschedule_period: Ignore the reschedule period for task instances