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
does not force all network containers to have a tunnel socket. This
requires making the tunnel socket pointer RCU protected, and involves
some subtleties in making sure race conditions are avoided when
adding or deleting a tunnel. See comments for more information.

To allow the user to do this, we add fields in struct xia_fib_config
for general 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 more principals with unusual routing table requests
in the future, so a field for general data will be useful.