IPv4/IPv6: dynamic registration of upper layer protocols; merge IPv?NetworkLayer's transport gates

TCP, UDP, SCTP, RSVP, OSPF, MANET are all merged into transport gates.
Network user modules must register their protocol number by sending
an IPRegisterProtocolCommand from initialize.

Introduced an IPSocket class that wraps the registration process.
IPv4/IPv6: rename and move NetworkLayer and NetworkLayer6

- NetworkLayer was renamed to IPv4NetworkLayer and moved into src/networklayer/ipv4
- similar change for IPv6

Conflicts:
	src/nodes/inet/NodeBase.ned
	src/nodes/mpls/LDP_LSR.ned
	src/nodes/mpls/RSVP_LSR.ned
	src/transport/rtp/RTPHost.ned
ARP: minor code cleanup
ARP: factored out an IARPCache
ARP: refactoring: ARP is now next to the IPv4 module not below it; see TODO below!

Motivation:
 - performance improvement (datagrams no longer go through ARP)
 - conceptually better (packets to PPP no longer flow through ARP)
 - more consistent with how IPv6 and NeighbourDiscovery are organized

TODO:
 - update NED docu of both ARP and IPv4!
 - proxyARP is now both in IPv4 and ARP??
 - refactor ARP gates: netwIn/netwOut/arpResIn (all connecting to IPv4 though)
 - note: IPv4RoutingDecision is now only effectively used on the ip-->arp connection
ARP, IPv4: introduce/rename proxyARP parameter
InternetCloud: useProxyARP,respondToProxyARP
IPv4NetworkLayer: always turn on useProxyARP, otherwise many existing simulations break

Setting useProxyARP=false breaks about 31 smoke test cases with:
"Cannot send datagram on broadcast interface: no next-hop address and Proxy ARP is disabled."

Cause: IPv4Configurator often doesn't fill in the next-hop address in the routes!
Address: rename isIPv6() to getType()

In preparation for generalizing Address in the next commits
BIG REFACTORING: routing tables and routes now implement a common IRoutingTable and IRoute (details below)

Motivation: allow uniform access to the IPv4, IPv6 and possibly other routing tables;
e.g. some wireless networks may use MAC address as network address. Also, in
simulation it sometimes makes sense to work with simple abstract addresses like
module names, indices or IDs.

Being able to uniformly access routing tables containing different types of
addresses makes it possible to implement routing protocols in generic way.
I.e. the same DYMO module can work with IPv6, IPv6, MAC and other addresses
without change and recompiling.

Ingredients of this patch:
- generic Address class that can hold all kinds of addresses (=union)
- interfaces for generic access: IRoutingTable, IRoute, INetworkDatagram, etc.
- Ping refactoring (use generic addressing instead of hardcoded IPv4+IPv6)
- merged routing table change notification constants for IPv4 and IPv6
Address moved
IPv4: implemented netfilter, ported MANET protocols to use it

- IPv4.cc/h no longer has #ifdef WITH_MANET
- INetfilter added, good for all network layer protocols
Turn off IPv6 routing by default.
introducing routingTableModuleName parameter -- TODO half-cooked!

- attempt is to get rid of the *Access classes, this time only for routing tables
- parameter name should rather be routingTableModule
- problem is e.g. IPv4AddressConfigurer -- how should it know where to find routing tables of hosts??
added GenericNetworkProtocol & co.
Address: new address types: MACAddress, ModuleIdAddress, ModulePathAddress; NOTE:

NOTE: does not compile without the GenericXXX stuff which will be
introduced in a later commit -- move this commit after that one?
Address: Implemented efficient address.

Also:
- Added check to prevent accidentally turning an IPv6 address into something else.
- Added check for NONE address type in conversion functions.
- Added some inline declarations.
added MultiNetworkLayer
Record all routing table changes.
--IPv6, tunneling: bugfix: was mixed usage of interface ID and interface index --FIXME revise!

added a new getBiggestInterfaceId() for IInterfaceTable --> NOT A GOOD IDEA