rule-generator: added proactive iface temp-naming when target name conflicts arise

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.

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 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.

The proactive rename also allows for udevd to finish processing the iface rename rules faster
because fewer conflicts will occur (or will occur for less time); iface rename attempts do not need
to continue to be retried and block while the code waits for the other interface to be added and
rules searched.
hwdb: updates from upstream

Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
make sure /etc/udev/rules.d/ exists prior to trying to write to it