Clean up dl-open features:

Add --with-dlopen=[yes,no] option to compile without loadable provider support.
Selecting no also disables the check for -ldl.

Add --with-extdir option to specify custom loadable provider dir.
Default is $libdir/libfabric.

Rename FI_EXTPATH to FI_EXTDIR for consistency with variable names and configure options.

Silently ignore extdir not found when loading instead of printing error to stderr.

Remove unused includes in fabric.c

Re-include common.c and enosys.c in dl-loadable providers, these are needed.
More specifically: DL-build providers can still call functions in libfabric proper.

Just because they're dlopened does not mean that they cannot used libfabric to resolve symbols (I know this for a fact because we have Open MPI plugins that are dlopened by libmpi call libmpi symbols).

More specifically: it's a bad idea to have duplicate symbols in multiple DSOs in a single process.  In this case, it probably won't cause any harm; indeed, one set of the redundant symbols will likely get ignored at runtime.  But in other cases, it can definitely cause linker confusion/barfing at runtime.