Make address-list per net-ns

This patch changes the way the local-address-list is handled. Up to now,
we have a big infrastructure, which maintained the local-address-list
per MPTCP-session. This is very memory-hungry as the addresses are
duplicated over to each MPTCP-session.

From now on, the addresses are maintained on a per-net-namespace basis.
It makes the address-handling much easier. Further, we do not iterate
over all MPTCP-session upon an address-event. We rather queue up events
in a list (similar to what is done in SCTP). Then, we trigger a
work-queue which iterates over the MPTCP-sessions. This allows to not
block the netdev-event as we are iterating of the MPTCP-sessions.

Signed-off-by: Christoph Paasch <christoph.paasch@uclouvain.be>
Modularize the path-manager

This patch makes out of the path-manager a module, by adding callbacks
from the TCP/MPTCP-stack to this path-manager.
The patch allows to actually change the path-manager as the machine is
running.

For example, a public web-server probably does not want to trigger the
creation of new subflows (the clients are behind a NAT). So, he does not
need the whole full-mesh infrastructure with address-handling. For
performance-reasons he should use the "default" path-manager who simply
does nothing.

Signed-off-by: Christoph Paasch <christoph.paasch@uclouvain.be>
Extract ndiffports

The full-mesh path-manager had the ndiffports-sysctl (a left-over from
our SIGCOMM-paper). This patch extraces the ndiffports-stuff into a
seperate module.

Signed-off-by: Christoph Paasch <christoph.paasch@uclouvain.be>
Fix: Do not send ACKs on pre-established subflows

E.g., we might send an MP_FAIL on a pre-established subflow. This one
will get rejected by the server (no MP_JOIN has been received), and thus
we are screwed.

This patch changes this, by taking pre_established in mptcp_sk_can_send
and mptcp_sk_can_send_ack into consideration.

Signed-off-by: Christoph Paasch <christoph.paasch@uclouvain.be>