fabric: Add timeout parameter to EQ wait calls

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
fabric: Add provider details to fi_prov structure

Rename fi_ops_prov to fi_prov and add the provider name and version
data to the structure.  This will allow the framework to detect
duplicate providers and select the most recent version of a
provider.  This will allow a provider built into the library to
be overridden with one that is loaded dynamically, and vice-versa.

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
fabric: Add fabric attributes

Define a fabric attribute structure that can also be used to report
provider details to the application.

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
fabric: Use uint32_t for version, not int

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
prov: Use constructors/destructors attribute

Replace ini/fini calls with constructor/destructor attributes on calls.

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
Enable modular building of selected providers, disabled by default.

0, 1, 2, or 3 (all) providers can be built as loadable.
Any combination of loadable/built-in/not built should work, ie:

$ # build into libfabric.so: psm, sockets
$ # dlopen: libibverbs-fi.so, $libdir/libfabric/*fi.so
$ ./configure –enable-verbs=dl

$ # build libfabric.so: nothing
$ # dlopen: lib{sockets,psm,ibverbs}-fi.so, $libdir/libfabric/*fi.so
$ ./configure –enable-verbs=dl --enable-sockets=dl --enable-psm=dl

$ # everything built in as normal
$ # dlopen: $libdir/libfabric/*fi.so, if exists
$ ./configure

Address issues from review:

Remove debugging printf, remove commented out ini/fini calls.