smbus: allow child devices to be added via hints
This will allow to add slave drivers in the same fashion as for iicbus.
Also, allow other code to add a child device and set its 'addr' ivar.
The ivar can only be set if it's unset, it can not be changed.
That could be used, for example, by a platform driver that has
a precise description of the hardware and, thus, knows what drivers
can handle what slaves.
The slave auto-probing code is unsafe and broken because it uses
7-bit slave addresses. It's going to be removed.
Note: internally the driver uses address of zero as an unset address
while smbus_get_addr() returns it as -1 for compatibility reasons.
The address is expected to be unset only for children that do not
work with slaves like, for example, smb(4).
Reviewed by: jhb
Differential Revision: https://reviews.freebsd.org/D8173