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.
Haskell has union types denoted by ```Either A B```. From conversations with members of the Haskel community, I've heard that this feature causes a lot of switch statements, leading to ugly. branching code. I'm not sure how to handle this, but perhaps one could create implicit type checks and blocks that use the order of the types on the union type. Something like:

```
var x = A | B | C;
for x do {
    ///Handle A
} or {
    ///Handle B
} or {
    //Handle c
}
```