add initial implementation of arc routing cache

Each node in the network can obtain basic routing information from the packets
it receive. If there is a packet received from a neighbour A (identified using
MAC address) which originates from node X (known from the network layer address)
then it may be a good idea to add "A is the next hop on path to X" to the
routing table. Obviosuly, since we have a limited amount of available memory
it is more "routing cache" than "routing table".

However, there are two kinds of packets that a node may travel through a node.
Some are just lone wanderers that follow the noble principles of flooding and
blindly search for their destination, exploring uncharted and exotic areas of
the graph where no node has even slight hope of ever belonging to The Shortest
Path. The others are the ones that had already found their true purpose and
follow The Shortest Path in the most orthodox way imaginable. They are well
known by the nodes the must travel through for they are The Frequent Ones.

Unfortunately, due to a fundamental flaw in the design of the universe (bug
reported, no response so far) it is not possible to know the future and
therefore no way to tell whether the packet (and the routing information it
brings with itself) is short lived result of flooding happening in a realms
far away or whether it is soon going to reach its true destination in which
case its routing information shall endure forever, engraved in the very
foundations of this world (well, not really, it may be evicted quite soon).

Do not lose thy hope though! The Wise had already faced such tarrible darkness
and conquered it. Their weapon was ARC (Adaptive/Adjustable Replacement Cache)
which was used not only to publish papers but, and that is truly an
unbeliveable victory over The Evil, is also used in real world solutions
(namely ZFS). This patch implements the general idea of ARC.