Fix nil assignability

Fix issue #520 for channel and array types.

From golang specs http://golang.org/ref/spec#Assignability:

A value nil is assignable to a variable of type T in cases when T is a pointer, function, slice, map, channel, or interface type.