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.
right now it looks like it's not possible to have syntax for an array of union types.  That seems like it could be problematic in the future.  For example, say you have htis in your .js:

```
function foo(x: string | number) {
    return [x];
}
```

This function will have a type that is nonexpressable with the syntax of the language.