Static constructors for built-in providers.

Add config.h defines for each built provider and if that provider is built as a DSO. Make
changes to init functions to match: remove ctor on fi_ini and call explicitly, only have the
ctor attribute defined on the providers if built as DSO, explicitly call built-in providers
and declare their init defs in fi.h

This should work for all our supported build configurations, and should not work for static-build plus dl-loading built-in providers (which I assume is unsupported).

Tested with dso providers and built-in, needs testing for static linking and other more providers. @sayantansur @jsquyres

I can centralize a lot of the sprinkled ifdefs in one header (for example: include/provider.h) that is included by fabric.c and the various providers if that is wanted.

fixes #293 

Signed-off-by: pmmccorm <patrick.m.mccormick@intel.com>
Note that these 2 AM_CONDITIONALs are not in the block starting at line 76 because AM_CONDITIONALs must be invoked unconditionally.

If you want these macros to be defined to 1 only for the "true" case, then you might as well at least put the "happy" AC_DEFINE in the block starting at line 76.

But it would actually be better to *always* AC_DEFINE these macros, and make the values be either 0 or 1 (and use #if instead of #ifdef).  Doing it this way will give you a compiler error if you misspell a macro name in C code (vs. a silent "it's always false" non-error).