Parsing Type Alias

This adds the ability to parse type alias declarations. They look like

    type bar = number;
    type Foo<T> = Bar<T>;
Answering my base question after I already sent it.

As mentioned, probably too complicated for the initial impl, but it may be interesting to think about lexically scoping type aliases, too