Parse interfaces

Interfaces are pretty simple to parse. They are basically named object types that can optionally extend 1 or more other interfaces.

I cleaned up `parseTypeAnnotationWithoutUnions()` a little bit too.

Tested via `npm test` and the esprima tester
Now that we have `parseGenericTypeAnnotation`, can we change `parseParametricTypeAnnotation` to `parseTypeParameters`? (That probably means changing the name of the AST node type as well)