XIP: add fib_no_newroute() and fib_no_delroute()

When fields newroute and delroute of struct xia_ppal_rt_eops are not
supported, one should use fib_no_newroute() and fib_no_delroute() to
avoid adding more empty functions in the kernel's image.
XIP: generalize main XID routing redirects

Routing redirecting main XID entries turned out to be a common
thing for principals. This patch generalizes this task to simplify
principals.
XIA/Socket: minor API review

- Loose socket address verification.
  The verification required exact socket address size.
  Although this worked because XIA addresses had the limit size,
  this is not correct because the address that XIA sees is a struct
  __kernel_sockaddr_storage, not user memory.

- Improve xia_dgram_connect()'s returned error.

- Dropped use of field sk->sk_state.
  This field was being set, but never read. Avoiding writing to it
  improves reuse of the socket-related functions XIA exports to
  principals.
XIA: add Serval principal

This is an initial commit. The code is mostly a verbatim copy of
Serval's kernel module available here:

https://github.com/princeton-sns/serval

Future commits will gradually move the code away from IP to XIA.
XIA/Serval: remove net/xia/ppal_serval/splice.c

The file was only needed because skb_splice_bits() wasn't
being exported by the kernel.
XIA/Serval: remove net/xia/ppal_serval/user_dma.c

The file was only needed because dma_skb_copy_datagram_iovec()
wasn't being exported by the kernel.
XIA/Serval: remove net/xia/ppal_serval/iovlock.c

The file was only needed because dma_pin_iovec_pages() and
dma_unpin_iovec_pages() weren't being exported by the kernel.
XIA/Serval: replace local headers to kernel ones

Serval's codebase keeps userland and kernel code intertwined,
and some headers are really meant to simplify the work of
userland code given that those headers are readily available
in the kernel.

Given that Linux XIA is only meant to be a native network
stack, this patch drops the easy to remove headers.
XIA/Serval: drop inet-to-serval translator

The translator only makes sense in original Serval.
XIA/Serval: drop UDP encapsulation

XIA has 4ID principals to deal with it.
XIA/Serval: drop pad and address extension headers

The padding extension header was not being used given that
all extension headers are 32-bit aligned.

The address extension header was not fully implemented.

This patch also drops field ext[] of struct sal_context;
this field were just wasting memory, more precisely
10 * sizeof(struct sal_ext *) bytes.
XIA/Serval: drop delay and drop rules

Queueing packets to make decisions in userland, or
having rules to drop packets only makes sense while resolving
hierarchical ServiceIDs.

Given that this behaviour is going to belong to another principal
in XIA, Serval doesn't need delay and drop rules.
XIA/Serval: drop keepalive feature

Function serval_sal.c:serval_sal_set_keepalive(),
reposible for activating the feature, was never called.
Moreover, function serval_sal.c:serval_sal_send_keepalive_probe()'s
comment states that "Keepalive currently not completely implemented."

Thus, this patch drops the keepalive code.
XIA/Serval: move Serval from IP To XIP

This patch moves Serval from IP To XIP through
the following changes:

- Drop enum sv_service_flags. This enum seemed important given it
  was a field in struct sockaddr_sv and many other structs that
  had a ServiceID. Nevertheless, the flags defined in this enum
  were only copied around, that is, they had no effects.

- Drop struct list_head sock_list that held all Serval sockets.
  This list was used to list sockets in userland via /proc.
  This list is redudant in XIA because sockets can be listed
  from routing tables. Not to mention, that sock_list was
  a source of contention on a busy server.

- Reduce ServiceID from 32 bytes to 20 bytes, and increase
  FlowID from 4 bytes to 20 bytes to match XIDs.

- Drop default ServiceID (i.e. all bits zero).
  This special ServiceID was used for broadcasting when no other
  ServiceID in the routing table matched the searched ServiceID.
  This is not needed in XIA given that we have NWP to deal with
  local networks.

- Replace Serval's control channel, which was implemented over
  Netlink, to XIA's Route Netlink channel.

- Drop source extension header (i.e. struct sal_source_ext).
  This extension header was only meant to deal with NAT,
  which doesn't exist in XIA.

- Drop service extension header (i.e. struct sal_service_ext).
  ServiceIDs are now part of the XIP addresses.

- Drop FlowIDs from SAL's basic header.
  FlowIDs are now part of the XIP addresses.

- Serval's connect(2) requires a socket to be bound.
  Otherwise it can't create an address for the FlowID.

- Adopt XID tables to store routing information.
  ServiceID and FlowID are now stored using the data
  structure provided to all principals; The obvious advantage
  is the adoption of RCU and increased code reuse.

- Move Serval's socket API from IP to XIP.

- Replace Serval's dependencies on IP to XIP.

IMPORTANT, this patch does NOT port socket migration.
  Given that files serval_sock.{h,c} hold functions used for
  migration, they are kept. Nonetheless, they are not included
  or compiled.