Rework all device detection routines which use SMBus read word
transactions in address range 0x40-0x48. Some devices don't like word
transactions, so we now try to do as much of the detection as possible
using byte transactions, and only use word transactions when there is
a good chance that the detection will succeed.