Comments & type annotations

Adds nodes for comments and for various type annotations

CC @jeffmo
Unfortunately, a default of the empty array broke some of the tests (see the previous build failures, but long story short there is a strict equality check and `[] !== []`). I suppose null is an ok default, just a little less convenient for visitors.