ARP: minor code cleanup
ARP: factored out an IARPCache
IPv4Address: rename getBroadcastAddress() to makeBroadcastAddress()

Also: added getNetworkBroadcastAddress() to IPv4InterfaceData
MACAddress: added mapMulticastAddress()
Ieee802Ctrl.inputPort renamed to interfaceId
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: queueIn+ipIn/queueOut (all connecting to IPv4 though)
- note: IPv4RoutingDecision is now only effectively used on the ip-->arp connection
Merge remote-tracking branch 'remotes/origin/topic/arp' into topic/networkprotocol

Conflicts:
	src/networklayer/ipv4/IPv4.cc
Added protocol registration via IPSocket to users of network layer transport.
Minor fixes.