Enable reuse of low-level netlink functions

Factors out basic netlink functions into the nlmsg package.

Note that this does not provide forwarding for functions previously
exported from Netlink, but now exported only from nlmsg.  While
technically a breaking change, I'm not sure if these functions could
have been meaningfully used from netlink.  I'm happy to implement
forwarding function if needed though.

Addresses #218
@mrunalp The problem occurs when the attribute is used as a child.  The total buffer length is calculated by summing the `.Len()` values of all the children (L211, L201).  The child buffers are however copied aligned (L219).  If the child lengths are not aligned, this results in the buffer being too short.  So if I understand correctly, either the proposed fix is correct, or aligning the child buffers is incorrect (ie L219).