Support for broadcoms multifunctional devices

bnc#841170, fate#316090

and cleanup and so on.
s/mainly/only/
It makes the caller shorter, *and* harder to read. This should instead encapsulate the whole logic of `allcards = probe_hardware(hwtype)`
> @param hwtype One of netcard, modem, isdn, dsl. Or nil, "", "all" to mean all of them.
> @return [Array] of hardware items (with a very complex structure which ReadHardware complica^Wsimplifies)

or
> @param hwtype (see ReadHardware)

where (see foo) is actually recognized by YARD which then copies the description