reorganize simplify_subtype to make certain cases work with constraint types
Summary:
This is in preparation to using constraint type Thas_member to typecheck property accesses (read only - currently implemented in `obj_get`.).
We want to be able to use the behavior of `simplify_subtype` to perform property accesses on things like unions and intersections. Therefore, all the cases dealing with unions, intersections, options, any, err and so on must come before the case for `LoclType ty, ConstraintType Thas_member _`. To do so, we move those cases and make them come first in `simplify_subtype`, while making sure the same inputs would match the same cases as before (which implies e.g. moving a lot of cases with Toption as well, to preserve the matching order).
Reviewed By: andrewjkennedy
Differential Revision:
D17710671
fbshipit-source-id:
89f85ce9e9af8e814242f8726b5db02faea47eb9