BecomeT needs to match before pretty much any non-general wildcard on upper bounds
BecomeT needs to match before pretty much any non-general wildcard on upper bounds

Summary: I found the following circumstance while testing some of my module exports changes, and was able to narrow the repro down to the following:

```
/* @​flow */

class PromisePolyfill<R> {
  constructor(callback: (
    resolve: (result?: PromisePolyfill<R> | R) => void,
    reject: (error?: any) => void
  ) => void): void {};
}

var promiseExports: typeof PromisePolyfill = PromisePolyfill;

function foo<T>(x: T): promiseExports<T> {
  return new promiseExports(function(res) { res(x); });
}
```

Output:
```
A.js:3:7,21: PromisePolyfill
Expected polymorphic type instead of
A.js:3:7,21: class type: PromisePolyfill

Found 1 error
```

It turns out this is just an issue with PolyT resolving to ClassT before BecomeT has a chance to get at the type.

I ran through most of the other patterns that match wildcards that would supercede this match and confirmed that this match makes sense to go here -- before pretty much all other matches.

Reviewed By: @avikchaudhuri

Differential Revision: D2117675

claudiopro/flow,jgrund/flow,gabelevi/flow,mroch/flow,JeckoHeroOrg/flow,siddhartharay007/flow,OCamlPro/flow,TiddoLangerak/flow,darioajr/flow,gabelevi/flow,lyip1992/flow,JonathanUsername/flow,ianobermiller/flow,shiftcars/flow,JonathanUsername/flow,mroch/flow,Drooids/flow,jgrund/flow,paulshen/flow,JeckoHeroOrg/flow,graue/flow,Fresheyeball/flow,ylu1317/flow,OCamlPro/flow,rafaelstz/flow,shiftcars/flow,jdelStrother/flow,davidmason/flow,graue/flow,Wanderfalke/flow,jeffmo/flow,cesarandreu/flow,OCamlPro/flow,d14b3l/flow,danvk/flow,siddhartharay007/flow,fletcherw/flow,claudiopro/flow,Drooids/flow,matklad/flow,JeckoHeroOrg/flow,graue/flow,KevinTCoughlin/flow,Jericho25/flow,jeffmo/flow,AprilArcus/flow,jamesgpearce/flow,matklad/flow,davidmason/flow,JonathanUsername/flow,ForbesLindesay/flow,Jericho25/flow,chenglou/flow,AprilArcus/flow,chenglou/flow,JohnyDays/flow,samwgoldman/flow,AgentME/flow,ylu1317/flow,YelaSeamless/flow,chenglou/flow,nmote/flow,paulshen/flow,cesarandreu/flow,facebook/flow,AprilArcus/flow,Wanderfalke/flow,jdelStrother/flow,AgentME/flow,JohnyDays/flow,dv/flow,CJstar/flow,AprilArcus/flow,Eyyub/flow,d14b3l/flow,nmote/flow,mcanthony/flow-type,nmote/flow,fletcherw/flow,jdelStrother/flow,AgentME/flow,mroch/flow,ylu1317/flow,Fresheyeball/flow,TiddoLangerak/flow,chenglou/flow,TiddoLangerak/flow,facebook/flow,rafaelstz/flow,JeckoHeroOrg/flow,davidmason/flow,YelaSeamless/flow,YelaSeamless/flow,ForbesLindesay/flow,chenglou/flow,darioajr/flow,jamesgpearce/flow,gabro/flow,jeffutter/flow,fletcherw/flow,Fresheyeball/flow,Jericho25/flow,mroch/flow,popham/flow,samwgoldman/flow,KevinTCoughlin/flow,KevinTCoughlin/flow,jgrund/flow,ianobermiller/flow,popham/flow,popham/flow,matklad/flow,AprilArcus/flow,shiftcars/flow,Fresheyeball/flow,gabro/flow,YelaSeamless/flow,mcanthony/flow-type,popham/flow,Drooids/flow,MichaelDeBoey/flow,Eyyub/flow,d14b3l/flow,gabelevi/flow,d14b3l/flow,shiftcars/flow,lyip1992/flow,asivitz/flow,rafaelstz/flow,TiddoLangerak/flow,gabro/flow,claudiopro/flow,fletcherw/flow,fletcherw/flow,gabelevi/flow,cesarandreu/flow,Drooids/flow,mroch/flow,CJstar/flow,graue/flow,AgentME/flow,rafaelstz/flow,samwgoldman/flow,dv/flow,jgrund/flow,popham/flow,jamesgpearce/flow,CJstar/flow,matklad/flow,ForbesLindesay/flow,facebook/flow,Wanderfalke/flow,facebook/flow,gabelevi/flow,CJstar/flow,mcanthony/flow-type,asivitz/flow,graue/flow,gabelevi/flow,popham/flow,jeffmo/flow,ForbesLindesay/flow,fletcherw/flow,MichaelDeBoey/flow,gabro/flow,asivitz/flow,jdelStrother/flow,jdelStrother/flow,shiftcars/flow,claudiopro/flow,nmote/flow,lyip1992/flow,TiddoLangerak/flow,facebook/flow,MichaelDeBoey/flow,dv/flow,JeckoHeroOrg/flow,claudiopro/flow,facebook/flow,chenglou/flow,cesarandreu/flow,Eyyub/flow,MichaelDeBoey/flow,jeffmo/flow,rafaelstz/flow,Eyyub/flow,gabelevi/flow,matklad/flow,mroch/flow,KevinTCoughlin/flow,danvk/flow,nmote/flow,OCamlPro/flow,jeffmo/flow,lyip1992/flow,samwgoldman/flow,JonathanUsername/flow,ianobermiller/flow,d14b3l/flow,paulshen/flow,ylu1317/flow,JonathanUsername/flow,jgrund/flow,Wanderfalke/flow,nmote/flow,dv/flow,samwgoldman/flow,paulshen/flow,samwgoldman/flow,jamesgpearce/flow,danvk/flow,shiftcars/flow,graue/flow,jeffmo/flow,mcanthony/flow-type,ylu1317/flow,JonathanUsername/flow,jeffutter/flow,jeffutter/flow,ianobermiller/flow,JonathanUsername/flow,jeffutter/flow,davidmason/flow,YelaSeamless/flow,jdelStrother/flow,davidmason/flow,ForbesLindesay/flow,popham/flow,jamesgpearce/flow,JohnyDays/flow,samwgoldman/flow,AprilArcus/flow,darioajr/flow,siddhartharay007/flow,facebook/flow,MichaelDeBoey/flow,JohnyDays/flow,jgrund/flow,gabro/flow,mroch/flow,nmote/flow,gabro/flow,danvk/flow,ForbesLindesay/flow,AgentME/flow,jamesgpearce/flow,darioajr/flow,siddhartharay007/flow,asivitz/flow,d14b3l/flow,jamesgpearce/flow