Implement channels{} block

Implement support for defining custom channels in a lexer grammar (fixes #309). The syntax is nearly identical to the existing `tokens{}` block:

    channels {
      WHITESPACE_CHANNEL,
      COMMENTS_CHANNEL
    }