NodeKind.String() will currently panic if called with an unknown
NodeKind.
This change verifies that the name of the NodeKind is known before
looking it up in kindNames. If the name is unknown, a generic
`NodeKind(N)` string representation is used.
Including the type of a constant improves discoverability because the
constant is listed next to the type in the godocs.
Before:
```
$ go doc -all . WalkStatus
type WalkStatus int
WalkStatus represents a current status of the Walk function.
```
After:
```shell
$ go doc -all . WalkStatus
type WalkStatus int
WalkStatus represents a current status of the Walk function.
const (
// WalkStop indicates no more walking needed.
WalkStop WalkStatus = iota + 1
// WalkSkipChildren indicates that Walk wont walk on children of current
// node.
WalkSkipChildren
// WalkContinue indicates that Walk can continue to walk.
WalkContinue
)
```
This commit the `iota`-based constants in the AST package to follow
this.