Simplify struct netns_xia

PROBLEM
Principals needed to add private fields to struct netns_xia, but
there was no clean way to do so; struct netns_xia is XIA's
attachment point to struct net.

SOLUTION
Besides DST related stuff, each principal should have just a single
entry in a hash table in struct netns_xia where it can hang
everything it needs.

OPPORTUNITY
Local and main routing tables should also part of principals'
private fields to avoid multiple lookups to the same principal's
data; principal HID was already having this problem, and negative
dependency is going to push virtually all principals to have
this problem.

POSITIVE SIDE-EFFECTS
- Cleaner interface for principals. Adding private fields per
struct net now is straightforward, and simplifies loading/unloading
of principals.

- Smaller memory footprint. Now there's a single hash table for
all principals. Before there was at least two hash tables,
namely, one for local and another for main routing table.

- Less table lookups to handle routing tables and private fields;
it is especially important for routing.
Unify local_delivery() and main_delivery()

This change simplifies the code, and avoids multiples lookups of
principal contexts and function calls while routing.
Introduce xdst_init_anchor()

Given that struct xip_dst_anchor is becoming more important due to
the implementation of negative dependency, and will potentially
be modified later on, it's better to make sure now that
struct xip_dst_anchor has proper initialization instead of
relying on zeroing it.
Implement neg. dep. on unknown XIDs of known ppals

Negative dependency is implemented for AD, XDP, and HID, and depency
checks are performed by routing code.

How to handle negative dependency on unknown XIDs of
known principals:

1. When inserting a local entry:
	a. After inserting the entry, RCU synch to guarantee that
	   every thread sees it, so all dependencies are going to
	   hang here.
	b. If an entry for the same XID exists in main table, flush
	   its anchor to force those DST entries to migrate to
	   the local entry.
	c. If an entry for the same XID does NOT exist, flush
	   negative dependency anchor of the principal.
Notice that the local entry doesn't needed to be locked during
the invalidations because even if it's removed, the outcome is
still correct, it just happens that the cleanup of dependencies
wouldn't be necessary anymore.

2. When removing a local entry:
	a. Do nothing special, all new DST entries that need
	   this XID will fall over to main table or
	   negative dependency anchor.
Notice that once the local entry is freed, its anchor will be flushed.

3. When insering a main entry:
	a. Flush negative dependency anchor of the principal.
Notice that locks are not necessary because if a local entry is
added it will capture all DST entries, whereas if the main entry
is removed, flushing the negative anchor is just a waste of
processing, but not wrong.

4. When removing a main entry:
	a. Do nothing special, all new DST entries that need
	   this XID already fall over to local table if it has
	   the XID, or to negative dependency anchor.
Notice that once the main entry is freed, its anchor will be flushed.
Fix neg. dependency bug related to XID redirects

When a known principal redirects to unknown XID, being the latter
of a known or unknown principal, and the negative anchor is
a single anchor to limit cost while routing, one can't just
filter by the unkown XID in the negative anchor because
it won't find all XDST entries that must be flushed.
The correct solution in this case is to flush
the whole negative anchor.

If a principal finds necessary to not flush the whole negative
anchor every time, intead of paying the full price of keeping
negative entries in its XID table, the principal can implement
a hash of negative anchor to split the single negative anchor.
The key of the hash would be the unknown XID.