sd-rtnl: rework rtnl type system

Use a static table with all the typing information, rather than repeated
switch statements. This should make it a lot simpler to add new types.

We need to keep all the type info to be able to create containers
without exposing their implementation details to the users of the library.

As a freebee we verify the types of appended/read attributes.

The API is extended to nicely deal with unions of container types.
networkd: netdev - improve logging  when setting ifindex
sd-rtnl: message - don't log about out-of-range attribute types

We will easily get these when running on newer kernels. However, we can safely ignore them as we
anyway don't know what to do with them.