netlink: fixes to work with Go 1.6
netlink: fixes to work with Go 1.6

The upcoming Go 1.6 release prohibits passing a Go pointer that points
into Go memory to C. The reflect based handling of the netlink
package mean that passing a pointer to an array in a struct with other
fields that contain pointers will trigger these checks, since cgo
can't tell which specific field is being passed down. Avoid the
checks by copying an array into a slice.

Go 1.6 also fixes the reflect package so that unexported embedded
fields are not settable. Rework the unmarshal function so that
unexported embedded structs continue to work (provided, of course,
that all the fields of the struct are exported; that requirement
existed for Go 1.5 also).

google/seesaw