Fix various things regarding union type test generation
Fix various things regarding union type test generation

Summary:
This diff changes the experimental ruleset_union to make it
generate the kinds of programs we intend.

- Do not generate optional types because assertions over them are incorrect and cause runtime failures
- Do not carry out multiple iterations over rules (to be reflected in base ruleset)
- Do not arbitrary create larger objects from smaller ones (to be reflected in base ruleset)
- Do not generate duplicates in Union branches, and generate only 2 (to be reflected in base ruleset)
- For functions that are mutators, only support limited forms of parameters
- Fix an issue in Union subtyping (to be reflected in base ruleset)
- Use a weakened form of object subtyping and let Flow pick up the slack

Reviewed By: samwgoldman

Differential Revision: D5608322

fbshipit-source-id: 57100d38ad5a76de60ae8334564213c27ad14729

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