XIA: add method ppal_destroy to struct xip_dst

It has been identified that principals occasionally need to
release resources attached to struct xip_dst, and
there was no easy way to do so.

This patch also adapts U4ID principal to use this new facility,
what fixs the following bug found by Cody Doucette:

There's only a struct dst_ops per struct net in XIA,
so, when u4id_deliver changed the destroy field of struct dst_ops,
it was forcing *every* XDST entry of that container to use
destroy_u4id_tunnel_dest.
XIA/U4ID: factor U4ID type declaration

Move the declaration of the U4ID principal type to a header file
so the United4ID and potentially other principals may use it.
XIA/U4ID: let a local entry be tunnel source

Instead of creating a separate tunnel socket, we can let the network
manager choose a local entry to also be the tunnel socket. This
avoids the problem of forcing all network containers to have a
tunnel socket.

To allow the user to do this, we add fields xfc_protoinfo and
xfc_protoinfo_len in struct xia_fib_config for general protocol
data and data length. We could have added specific fields (like
those for lladdrs), but two booleans for setting up
a U4ID tunnel is too special of a case to warrant unique fields.
Also, there may be more principals with unusual routing table requests
in the future, so a field for general data will be useful.