Build: Static constructors for built-in providers

Change how internal and external providers are built to fix static
build issues.  External providers are now required to export a
well known API that is invoked by the libfabric framework.  This
replaces the fi_register call that libfabric exported.

Update the build configuration to better handle building in-tree
providers as separate DLLs (for testing purposes).  When building
an in-tree provider as a separate DLL, it now needs to export
the required fi_prov_ini function.

Signed-off-by: pmmccorm <patrick.m.mccormick@intel.com>
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
Merge pull request #399 from shefty/master

Build: Static constructors for built-in providers
prov/psm: fix the return code of fi_cq_read for error completions

When an error entry is created from PSM status, the function returned 1
incorrectly. The correct way is to continue to the CQ dequeue step, where
the error entry will be discovered and the proper value will be returned.

Signed-off-by: Jianxin Xiong <jianxin.xiong@intel.com>