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