sr: remove unused argument from hardware driver function init()

It was actually used in one way: the session file loaded abused it for
passing in the filename -- something it definitely wasn't intended for.
This now uses the proper way to pass arguments to a driver: the new
SR_HWCAP_SESSIONFILE.

The OLS driver could also use it as an indication of the serial port to
use instead of actively probing all serial ports on the system, but there
wasn't any frontend code that passed in such a parameter, making it
entirely useless. That will soon be handled differently with the new
scan() API call, regardless.
sr: add new driver API call: scan()

This changes the semantics of the init() call as well. That now only
initializes the driver -- an administrative affair, no hardware gets
touched during this call. It returns a standard SR_OK or SR_ERR* code.

The scan() call does a discovery run for devices it knows, and returns
the number found. It can be called at any time.
genericdmm: fix header guard
genericdmm: use vid.pid as USB conn spec

: is just too hard for the CLI
genericdmm: allow for default options in DMM profiles

Much better than the special-cased USB vid.pid
genericdmm/fs9922: no initialization needed
genericdmm: better subdriver API arguments
sr: move SR_HWOPT into its own enum, and create struct sr_hwopt

SR_HWOPT_* entries are driver options, not device instance parameters, so
they will never be mixed together.

Also, driver options are always passed in a GSList, where the data field
is a struct sr_hwopt.
sr: split driver init into init() and scan()

init() now only does whatever administrative stuff it needs (typically not
much), and returns an error code.

scan() can be called multiple times during the life of an application, and
returns a GSList of struct sr_dev_inst * of devices found during that scan.
The instances are a copy of the ones stored in the driver's own instance
list, to be freed by the caller with g_slist_free() only.

The scan() call can be passed a GSList of struct sr_hwopt *, to direct the
scanning.
sr: add probe list to device instance

There is no point in libsigrok copying probe lists around. The driver now
builds a list of probes according to the model device it found, and will
make that available to a frontend. The frontend thus has a reference of
what the driver has, including default names, and doesn't need libsigrok
to provide an unnecessary level of abstraction.

The sr_probe_new() library-private function is a helper for drivers.
sr: add GSList of instances to the driver struct

This gives the driver a private place to keep its instances, without
polluting the global namespace.
fx2lafw: use new init/scan API
fx2lafw: use new instance-based probe list
fx2lafw: use driver struct-based device instance list
genericdmm: use driver struct-based device instance list
genericdmm: more flexible device discovery
genericdmm: use new scan API
sr: split driver options into separate list
sr: add driver field to sr_dev_inst, to bring it on a par with sr_dev.
sr: add new driver API call info_get()

This will replace dev_info_get(), and will be used to fetch both
driver and device instance-specific information. The sr_dev_inst
argument is NULL in case of a driver info fetch. In line with the
libsigrok wrapper, this function returns an error code, using the
supplied void ** to return the requested data.