Union Types

This is the starting implementation of Union Types as proposed in #805. It includes all parts of the core proposal, but not the "Possible Next Steps" (yet). The implementation reflects the decisions we made in the 10/3 design meeting.

@RyanCavanaugh The pull request doesn't yet include new test baselines (and thus the Travis build will appear to fail). The deltas all look good, but a number of tests are now incorrect and need to be modified. I'm wondering if I can get you to help out with that.
I'm not sure how (or if) we would infer `any` in the old compiler. I think we would have inferred `{}` because that was the best common type of number and string. We wouldn't make any inferences from `a` in the lambda argument since it has no type annotation.

In the new compiler we error now because none of the inferred types is a supertype of all others.