ToDevice: netdev->tx_lock locking no-op

This commit moves the netdev tx_lock code out of ToDevice::run_task and into
utility functions.  It should be a no-op.  The intention is to use these new
functions in a later commit to fix a deadlock issue in this Task.
ToDevice: remove deadlock

ToDevice calls Element::pull with the tx_lock spinlock held.  Since Elements
might do something that schedules, this can lead to deadlock.

I noticed this because in our click config, an Element schedules a timer in
the pull path, which should be allowed but which also acquires a mutex in
order to update the TimerSet.

The fix is to release the lock around input(0).pull() and then trylock.  On
fail, we bail out, skipping all of the code that might require the lock to
be held.  There is relatively little performance hit in this solution.

An alternative fix would be to create a Deque<Pair<Packet*,click_jiffies_t>>
and pre-fill it with _burst packets before acquiring the lock.  I tried this
and performance suffered.  It might work if the netdev could tell us roughly
how many Packets it would be willing to TX.  Without that information, we
add an extra, unnecessary layer of buffering.
click/ToDevice: move a couple of counters

After the ToDevice deadlock fix, these counted were not being counted since
they come after bail:.  This commit moves them to after we release the
tx_lock.
Merge pull request #106 from pallas/todevice-deadlock

ToDevice deadlock