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.

Functions are added for loading and unloading the module, as well as
initializing and freeing an instance of U4ID in u4id_net_init and
u4id_net_exit, respectively.
XIA/U4ID: add UDP socket for tunneling

During the loading of a U4ID principal, a socket is created and bound
to the port U4ID_SERVER_PORT. Eventually, socket creation will be
per instance of a U4ID, and the port will be fetched from the XID.
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.
XIA/U4ID: add delivery 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 is a main U4ID and it is not a sink, we
need to tunnel:

If the packet needs to be written to the network, then an output
function is called. The output functions tunnel the XIP packet by
fetching the IPv4 address and UDP port from the XID and adding
an IP and UDP header to the packet before transmitting it.

If the packet is being received, then an input function is
called. THe input functions expand the struct sk_buffer if
necessary, and if the packet came from the network then the
TTL is decreased. The appropriate output function is then
invoked to write the packet to the network.