XIA: add principal United 4ID

United 4ID principal brings to Linux XIA compatibility with
Click XIA's 4ID.

For principal developers, United 4ID's code showcases
routing redirects as a mean for principal composition since
United 4ID in Linux XIA is a hollow principal that only
delegates work to U4ID and I4ID principals.
XIA/United4ID: comply with Click XIA

Dan Barrett described the format of
the United4ID's XIDs as follows:

United4ID-4500000000010000fafa000000000000c0a81880

Byte  0: always 0x45
Byte  5: always 0x01
Byte  8: always 0xfa
Byte  9: always 0xfa
Bytes 16-19: IP address (192.168.24.128 in the above example)

All remaining bytes are always zero.
XIA/Serval: rename `srvcid' to `serval'

This change matches userland label.
XIA/Serval: address CHECKSUM_PARTIAL bug

XIA Serval wasn't sending out the SYN packet when the outgoing
network device supported TCP checksumming in hardware.
Depending on the network card drive, the kernel could panic.
The e1000 card in my machine issued a friend warning in dmesg:

[ 2700.769728] e1000 0000:00:03.0 eth0: checksum_partial proto=dec0!

According to a comment in original Serval's
src/stack/serval_tcp.c:serval_tcp_sendpage(),
Serval cannot use this hardware feature due to the hardware
only supporting IP as the underlying protocol of TCP.

Besides fixing the cited bug, this patch cleans a little bit
around the code related to the constant CHECKSUM_PARTIAL.

See Cody's bug report at
https://github.com/AltraMayor/XIA-for-Linux/issues/3 for details.
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.