Fixes kref in iproute

The old style was racy and wouldn't decref if you were over 1.  This is
basically the same as the 9ns code now (TODOs and all).

One thing that may make using a release harder is that the route needs
to know f->queue.  Doing the 'release' work in the if (kref_put()) block
will still work (as far as handling refs and races go).

Definitely sketchy though, so we should look at this later in case we
are losing memory in the routes.