[merge_js] Don't break unions in merge_tvar
[merge_js] Don't break unions in merge_tvar

Summary:
This union manipulation on exported types seems to be the culprit for a long
existing error in type-at-pos for `React$Node`. The problem was that in `lib/react.js`
`Node` was defined as:
```
declare type React$Node =   // line 12
  | void
  | ...
  | React$Portal
  | Iterable<React$Node>;
```
and exported as
```
declare export type Node = React$Node;  // line 234
```
So the exported union type of line 12 was broken up and reunited into a new union with
a `def_loc` of line 234. Any import later on would report line 234 as the `def_loc` of
`React$Node`, instead of the actual line 12.

This commit changes this behavior preserving the original union.

Facbook:
It even seems to offer a perf win on www.

Reviewed By: avikchaudhuri

Differential Revision: D8164167

fbshipit-source-id: 8c914871cc0e31e4b5ddc89e8321437923068000

samwgoldman/flow,gabelevi/flow,jamesgpearce/flow,JonathanUsername/flow,AgentME/flow,AgentME/flow,JonathanUsername/flow,samwgoldman/flow,samwgoldman/flow,gabelevi/flow,nmote/flow,samwgoldman/flow,popham/flow,jamesgpearce/flow,nmote/flow,mroch/flow,facebook/flow,mroch/flow,jamesgpearce/flow,claudiopro/flow,claudiopro/flow,facebook/flow,popham/flow,JonathanUsername/flow,claudiopro/flow,mroch/flow,mroch/flow,jamesgpearce/flow,nmote/flow,gabelevi/flow,claudiopro/flow,popham/flow,gabelevi/flow,nmote/flow,jamesgpearce/flow,jamesgpearce/flow,popham/flow,gabelevi/flow,AgentME/flow,samwgoldman/flow,jamesgpearce/flow,facebook/flow,mroch/flow,samwgoldman/flow,popham/flow,facebook/flow,JonathanUsername/flow,JonathanUsername/flow,facebook/flow,AgentME/flow,popham/flow,samwgoldman/flow,JonathanUsername/flow,nmote/flow,JonathanUsername/flow,facebook/flow,nmote/flow,gabelevi/flow,mroch/flow,nmote/flow,gabelevi/flow,claudiopro/flow,AgentME/flow,mroch/flow,popham/flow,facebook/flow