Support union type annotations in fb-esprima

These are pretty straightforward. Typescript wrote a good spec for
them here: https://github.com/Microsoft/TypeScript/issues/805

The one tricky thing that we don't currently have a way to parse is a type that
is function type A or function type B. You would need parens like

    (() => string) | (() => number)

or type aliasing like

    type A = () => string;
    type B = () => number;
    var x: A | B = ...;

Test Plan: npm test