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.
do not allow old data replacing newer routing cache entries

An the follower of the noble principle of flooding was brought before the
king of the Node as it was a custom in these lands that all travelers passing
through answered before the king telling the tales of lands far away. He told
the king of his journeys and what evil had he encountered. Then the king spoke:
"Alas! If only thou hast come here swifter I would not have my men all over the
graph looking for what thou already know!". The guest wanted to describe the
perils that awaited him on his way to the Node, but before he could do that the
king continued: "Strange are your words though for different news I had heard
from my men who traveled through the graph. Nay! I am not going to take counsel
from you." Grat sorrow these words brought to the heart of the messanger,
sorrow that remained till the day his dead body was collected from the streets
of the Node.
allow python code to use /dev/tun devices
Merge remote-tracking branch 'pdziepak/tun_dev'