net: Add fast path in ARP lookups

This patch adds a fast path to arpresolve. A RCU protected ARP cache is
introduced to accelerate arpresolve lookup. A IPv4 address and MAC
address are cached. If we hit the cache, no mutexes are taken and we go
to the fast path. If not, we go to the normal slow path. Most of the
time will we hit the fast path, in this case, in a single lookup,
IF_AFDATA_RLOCK(ifp), IF_AFDATA_RUNLOCK(ifp), LLE_RLOCK(lle),
LLE_RUNLOCK(lle) will be saved.

Currently, arpresolve returns a 'struct llentry* lle' which is used in
ether_output. We might hit use-after-free if we do not take the lle lock
in the fast path. However, in ether_output, lle is only used to check if
the lle contains LLE_IFADDR flag. To solve this issue, we return a
is_ifaddr flag instead of lle.

Fixes #300.

Signed-off-by: Asias He <asias@cloudius-systems.com>
ci