Split off some callbacks into "filters"

Different return types.  Meh.
Re-send un-ack'd packets
Copy link list before iterating over it

This lets the caller of n3_for_each_link make any changes to the list of
links from within the callback without causing ill effect.

Also removing the now-silly FOR_EACH... macro.
Fix receive to return whether it got a packet

Since now it can get a packet that contains no "data" (which is still
useful e.g. for acks), we need to check for that condition instead of
just the received data size.
Clean up weird for loop