AIX: Optional filename-based shlib versioning

Support filename-based shared library versioning on AIX with the lib.so
library filename extension, which is used with runtime linking only.
Runtime linking is enabled by the -brtl linker flag for executables and
the -G linker flag for Shared Objects.
(aix-soname=aix): Default, the current situation.
  (lib.a): When the -brtl linker flag is found in LDFLAGS, create from
    static objects only. Otherways, create as traditional shared library
    archive from the Shared Object built without runtime linking, with
    in-archive versioning.
  (lib.so): When the -brtl linker flag is found in LDFLAGS, create as
    the standalone Shared Object built with the -G linker flag, without
    any versioning support. Otherways, do not create it at all.
  (executables): When the -brtl linker flag is found in LDFLAGS, prefer
    to link against libraries with the .so filename extension.
    Otherways, link against libraries with the .a filename extension.
  (module): When the -brtl linker flag is found in LDFLAGS, same as
    lib.so.  Otherways, same as lib.a.
(aix-soname=svr4): Linux/SVR4 compatible shared library versioning.
  (lib.a): Create from static objects.
  (lib.so): Create as shared library archive from the Shared Object
    named shr.o or shr_64.o, built with the -G linker flag, and the
    F_LOADONLY flag set, plus an Import File named shr.imp or
    shr_64.imp, respectively, necessary to allow for filename-based
    versioning.
  (executables): Add the -brtl linker flag to LDFLAGS, to prefer linking
    against shared libraries with the .so filename extension.
  (module): Same as lib.so.
(aix-soname=both): Linux/SVR4 compatible shared library versioning, but
backwards compatible.
  (lib.a): Create as traditional shared library archive from the Shared
  Object built without runtime linking, with in-archive versioning.
  (lib.so): Create as shared library archive from the Shared Object
    named shr.o or shr_64.o, built with the -G linker flag, and the
    F_LOADONLY flag set, plus an Import File named shr.imp or
    shr_64.imp, respectively, necessary to allow for filename-based
    versioning.
  (executables): Add the -brtl linker flag to LDFLAGS, to prefer linking
    against shared libraries with the .so filename extension.
  (module): Same as lib.so as well as lib.a.

* build-aux/ltmain.in: (func_mode_execute) For the -dlopen option,
when testing if the file to be dlopen'ed exists, strip the optional
shared archive member (seen on AIX) from dlname first.
(func_mode_uninstall) Do not try to remove the shared archive member
(seen on AIX), but the archive file only.

* m4/libtool.m4: (soname_spec) Specify the archive member when creating
traditional lib.a shared archives on AIX as well.
(archive_expsym_cmds) On AIX, split $soname into both the archive file
name as well as the shared archive member name, and create the shared
archive using these results.

* m4/libtool.m4: (no_undefined_flag) Define for AIX runtime linking.
(allow_undefined_flag) Undefine for AIX runtime linking.
(archive_expsym_cmds) Reorder to have -G before $no_undefined_flag.

* m4/libtool.m4: (library_names_spec) No versioning with AIX runtime
linking at all upon --with-aix-soname=aix.

* m4/ltoptions.m4: (_LT_WITH_AIX_SONAME) New. Provides
--with-aix-soname=aix|svr4|both commandline option. Declares the
'shared_archive_member_spec' libtool variable.
(_LT_SET_OPTIONS) Add LT_INIT options "aix-soname=aix",
"aix-soname=svr4", "aix-soname=both". Default is "aix-soname=aix".

* m4/ltdl.m4: (LT_SHARED_LIB_MEMBER) Define, based on the value of
the shared_archive_member_spec libtool variable.

* m4/libtool.m4: Support the "--with-aix-soname" settings.
* libltdl/ltdl.c: (LT_SHARED_LIB_MEMBER) When not defined by configure
because of --with-aix-soname=aix, still define for AIX again to allow
for loading foreign libtool archives specifying an archive member.

* libltdl/loaders/dlopen.c: (vm_open) When LT_SHARED_LIB_MEMBER is
defined, and we are advised to try known extensions (from lt_dlopenext),
and no shared archive member was specified, and dlopen fails with "Exec
format error", indicating the requested file was found but cannot be
loaded as standalone Shared Object, try again with specifying the
default shared archive member.

* tests/deplibs-ident.at: To define whether this test should XFAIL, use
hardcode_action, hardcode_direct, hardcode_direct_absolute configuration
settings instead of platforms aix, bitrig, hppa-hpux, interix or openbsd.

* tests/template.at: Skip test with undef syms across libraries on AIX.

* tests/versioning.at: On AIX, when shared_archive_member_spec is
defined, we can run the versioning check.

* libltdl/loaders/dlopen.c: (vm_open) Use RTLD_MEMBER flag for dlopen
when the filename does specify an archive member between "()". Retry
with appending LT_SHARED_LIB_MEMBER when archive file seems to exist.
respect old_archive_from_new_cmds in mode=relink