generic: allow custom constructors

Sometimes it is not enough to define one type for possible NLA format. E.g. in the
case of VLANs or bridges, IFLA_INFO_DATA format depends on IFLA_INFO_KIND
value.

For these cases one can use custom NLA type constructors: define a function that
return desired NLA type upon call. For such function no arguments are provided,
only self-reference. All required info should be already decoded into self.
ifinfmsg: decode IFLA_INFO_DATA for vlan interfaces
ipdb: return master interface for vlan ports
ipdb: decode vlan id
ipdb: fix slave interface renaming