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.
Import strxcpyx from upstream

This commit imports strxcpyx from upstream.  This is upstream commit

    d5a89d7dc17a5ba5cf4fc71f82963c5c94a31c3d

Note: there were also some very minor code cleanups to

	accelerometer.c: line 187
	collect.c: lines 35, 140
	libudev-device.c: line 780
	libudev-hwdb.c: line 300

These are part of upstream commits:

	507f22bd0172bff5e5d98145b1419bd472a2c57f
	3cf7b686e6b29f78de0af5929602cae4482f6d49
	67410e9f73a6cdd8453c78b966451b5151def14a

Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
rule-generator: improve commit 06fe4379a943e2ac54f68cf34820f0e6710f15b6

This commit updates commit 06fe4379a943 with the changes made in
commit 583e51ce5461a.

It also adds an immediate exit upon finding a match in
udev_rules_assigning_name_to(); since there should never be more than 1
match in the first place, and the usage of the funciton only cares about
the return value being 0 or more-than-0.