rule-generator: proactively rename ifaces to avoid conflicts

When a new network iface device is added, scan through the list of rules to see if its
kernel-assigned name is used as a target for another device.  If so, and said target device
is not this device, rename it to a temporary interface name.  Then rename the device in
accordance with any rename rules that may apply to this device, if applicable.

The temporary name assigned is the basename of the interface with a numeric compoment which is
close to the inverse of the numeric id (127 - id#).  This should provide a more user-friendly
output than the old 'rename#' behaviour, when there is no final target name for the iface.

This proactive temporary rename will prevent cases where old-style rule-generator rules are used
and a target NAME= is set for one iface, assigning it to the iface name used by a second iface,
and that second iface has no rename rule to apply.  The original rename code would be blocked
due to the conflict and time out when attempting to rename, leaving the interface assigned to the
temporary 'rename[id#]' name and/or failing to rename other ifaces in accordance with the existing
rules.  This is a corner case that only occurrs when 75-persistent-net-generator.rules or the
write_net_rules script it 'IMPORTS' fails to generate a new rule and rename the interface and
there is no other interface-renaming rules that apply.

There may also be performance benefits to renaming ifaces early, but no benchmarks have been
run to confirm this.

Signed-off-by: Ian Stakenvicius <axs@gentoo.org>