codecgen: use actual type (not underlying) when doing direct assignment during decode.
codecgen: use actual type (not underlying) when doing direct assignment during decode.

We have to use the actual type (not underlying type)
name when doing a direct assignment.
We don't have the luxury of casting the pointer to the underlying type.

Consequently, in the situation of a
    type Message int32
    var x Message
    var i int32 = 32
    x = i // this will bomb
    x = Message(i) // this will work
    *((*int32)(&x)) = i // this will work

Fixes #63

ugorji/go,sunvim/go,sunvim/go,ugorji/go,whyrusleeping/go-codec,ugorji/go,whyrusleeping/go-codec,sunvim/go,whyrusleeping/go-codec