XIA: add initial U4ID principal

This principal is used to tunnel XIP packets in UDP/IPv4 packets. This
commit adds entries in the appropriate Makefiles and adds a new
Makefile, Kconfig, and main file for the U4ID principal.
XIA/U4ID: add UDP socket for tunneling

During the loading of the network namespace for the U4ID principal,
a socket is created to serve as the entrance to a tunnel for any
encapsulated XIP packets.

By default, this socket is bound to INADDR_ANY:0x41d0 (0.0.0.0:16848),
but can be configured by the network administrator using the kernel
module parameters tunnel_addr (as an IPv4 address string) and
tunnel_port (as a short):

 # modprobe xia_ppal_u4id tunnel_addr=10.0.2.15 tunnel_port=16500
XIA/U4ID: add local U4IDs

Routines for creating, deleting, dumping, and freeing local U4IDs are
added. When a local U4ID is added, a socket is opened on the given
address:port. The socket is marked as an encapsulation socket, which
allows a callback function, u4id_udp_encap_recv, to be registered, which
will be called upon packet delivery on that socket.

Upon receiving an encapsulated XIP packet, u4id_udp_encap_recv
puts the packet on the loopback device so that the packet is
naturally delivered to the xip_rcv function. This passes control
of the packet from the IP stack to the XIA stack.

A new UDP encapsulation type is added to include/uapi/linux/udp.h.

Since local_free_u4id is invoked in an atomic context, the socket
cannot be destroyed. Therefore, a workqueue is used to defer the
socket destruction (and the freeing of the struct fib_xid_u4id_local).
XIA/U4ID: add u4id_deliver and DST I/O functions

If the U4ID to be routed is a local U4ID and it is not a sink, we
have reached the destination of an XIP tunnel. Therefore, the last
node should be advanced and routing may continue.

If the U4ID to be routed has a valid XID but is not local, we
need to tunnel.
Merge pull request #4 from cjdoucette/u4id

Request to merge the U4ID principal