Atomic route modification in kernel_netlink

At present, route updates require that the old route is removed
before the new route is added.  The netlink API however supports
atomic route modification.  This patch modifies kernel_netlink.c
to use this API and flush the Linux IPv4 route cache afterwards.

TODO: implement the route cache flushing for IPv6 routes.
Add route cache flushing for IPv6 routes

To modify an existing route, the route cache table must be cleared.
This patch writes to /proc/sys/net/ipv6/route/flush to make this
happen.  There appears to be an issue with Linux not actually
flushing the cache when this happens.  The iproute2 way of working
around this is complicated: use rtnetlink APIs to query all cached
routes and delete them one by one.  It may be possible to invoke
"/usr/sbin/ip -6 route flush cache" too in te worst case.