Always check for resolved bindings during concretization
Always check for resolved bindings during concretization

Summary:
In a TypeAppT or AnnotT, we trust that the underlying type is an annotation
which can be resolved in exactly one step. If the annotation is unresolved, we
will create a Binding job, which will trigger full type resolution. If the
annotation is already resolved, we can simply walk its structure.

Note that we might consider more positions to be bindings as well. For example,
the type arguments of a ThisTypeAppT, or the fields of an EvalT. In practice,
it seems like we do have non 0->1 tvars in these positions, but we should ask
why.

For TypeAppT, this can arise through async functions, where the polymorphic
Promise<T> is applied to the inferred return type of a function, which is not
0->1.

In any event, if additional precision is possible here, it will be explored in
follow-up work.

Reviewed By: avikchaudhuri

Differential Revision: D10432284

fbshipit-source-id: b72088d8cb7e31d0b6bd54cd0ccf344c931b90fc

gabelevi/flow,samwgoldman/flow,mroch/flow,gabelevi/flow,samwgoldman/flow,samwgoldman/flow,gabelevi/flow,facebook/flow,facebook/flow,facebook/flow,gabelevi/flow,mroch/flow,samwgoldman/flow,mroch/flow,facebook/flow,facebook/flow,facebook/flow,mroch/flow,samwgoldman/flow,mroch/flow,gabelevi/flow,samwgoldman/flow,facebook/flow,gabelevi/flow,mroch/flow,samwgoldman/flow,mroch/flow,gabelevi/flow