Implement new method for finding and loading device-specific drivers
Export an ibv_register_driver() entry point, and expect plugins to
call it from __attribute__((constructor)) code. This will allow
multiple drivers to be statically linked in.
Also read config files and then use dlopen() with a relative path to
find drivers (rather than searching a specific lib/infiniband/
directory for .so files). This allows multiple versions of a driver
to be installed in parallel, and also allows for optimized drivers in
places like /lib/i686.
Drivers should no longer export an ibv_driver_init() function any
more. Instead, they should add a function (which can be static) with
__attribute__((constructor)) that calls ibv_register_driver() to
register the driver's probe function. Also, drivers should install a
file with a line "driver <driver name>" under ${sysconfdir}/libibverbs.d.