Fix recursive type handling

Also, make the representation of recursive types
a little more sensible (pointer to opaque, rather
than pointer-to-pointer to opaque).

This enables building of go/test/peano.go