Implement multi-architecture package support.

This commit implements the infrastructure parts necessary to build
multi-architecture packages.  When MULTIARCH is enabled and packages
are converted to be multi-architecture aware, then the package is
built for all supported ABIs and combined into a single package.

A number of new variables are introduced:

  MULTIARCH

    User variable to turn on/off multi-architecture support

  USE_MULTIARCH

    Package variable, listing which parts of the package should be
    built for multiple architectures.  Currently supports "bin" and
    "lib".

  {BIN,LIB}ARCHSUFFIX

    Package variables, set on a per-ABI basis and used to determine
    the correct location of bin and lib directories for each
    architecture.

  {BIN,LIB}ARCHSUFFIX.${ABI}

    Internal per-ABI directory suffixes.

  MULTIARCH_ABIS

    List of ABIs which should be built when MULTIARCH is enabled.  The
    ordering is important, as the install phase is done for each ABI,
    and so the final ABI will take precedence for files which have the
    same path.

  _MULTIARCH

    Internal variable, set if multi-architecture builds should be
    performed.

As an example, on Solaris the following variables are set:

  MULTIARCH_ABIS?=   64 32
  BINARCHSUFFIX.32?=
  BINARCHSUFFIX.64?= /amd64
  LIBARCHSUFFIX.32?=
  LIBARCHSUFFIX.64?= /amd64

Thus, a multi-architecture package with a traditional ${PREFIX}/lib
will install 32-bit libraries into ${PREFIX}/lib and 64-bit libraries
into ${PREFIX}/lib/amd64, with any remaining files installed as 32-bit.

Converting a package is reasonably straight-forward:

 - Set USE_MULTIARCH to 'bin', 'lib', or both, depending upon what is
   most appropriate

 - Update any references to 'bin' or 'lib' to use lib${LIBARCHSUFFIX} or
   bin${BINARCHSUFFIX}.

Taking devel/zlib as an example:

  Makefile

    +USE_MULTIARCH=         lib

    -INSTALLATION_DIRS=     include lib ${PKGMANDIR}/man3
    +INSTALLATION_DIRS=     include lib${LIBARCHSUFFIX} ${PKGMANDIR}/man3

    do-install:
    -       ${LIBTOOL} --mode=install ${INSTALL_LIB} ${WRKSRC}/libz.la ${DESTDIR}${PREFIX}/lib
    +       ${LIBTOOL} --mode=install ${INSTALL_LIB} ${WRKSRC}/libz.la ${DESTDIR}${PREFIX}/lib${LIBARCHSUFFIX}

  PLIST

    -lib/libz.la
    +lib${LIBARCHSUFFIX}/libz.la

PLISTs are intelligently expanded for multiple architectures, so you
only need to retain the single line and it will do the right thing
whether MULTIARCH is enabled or not.

Additionally, the bootstrap script has grown an --multiarch argument,
which sets MULTIARCH=yes in the default mk.conf if supplied.

This work is sponsored by Joyent, Inc.
Convert first set of packages to multiarch.

XXX: security/openssl is currently not working correctly due to
an ABI mis-match.
Convert to multiarch.
Fix libtool with ABI=32 and 64-bit compiler.

Without this, libtool will default to whatever the compiler produces
by default.
Convert to multiarch.
Convert to multiarch.
Add @link support to pkg_install.

This allows a @link directive in a plist, e.g.:

  @link bin/src bin/dst

and will create a hard link at pkg_add time using the supplied
arguments.  Flags are not supported, and the usual caveats for
hard links apply.
Import isaexec-1.0

This is a direct copy of isaexec.c from illumos, and will be used for
multiarch binaries.  We need this in pkgsrc because we rely on hard
links, and cannot guarantee that binary packages will be on the same
file system as /usr/lib/isaexec.
Simplify.
Add infrastructure support for isaexec.

When building multi-arch binaries, put 32-bit binaries inside bin/i86,
64-bit inside bin/amd64, add a dependency on isaexec, then use the new
@link support in pkg_install to create links to isaexec from the original
binary in bin/.
Convert digest to multiarch.

Mostly just for simple testing and verification of isaexec support.
Merge branch 'trunk' of github.com:joyent/pkgsrc into joyent_multiarch
Convert a bunch more packages to multiarch.

XXX: curl installs ABI-specific headers, this currently isn't handled.
Update to isaexec-1.1

Add support for the 'ABI' environment variable, and if it is set,
look in the ABI-specific subdirectory before falling back to the
usual isaexec(3C) routine.
Clean up ABI support.
Merge branch 'trunk' into joyent_multiarch
Convert archivers/lzo to multiarch.
Convert archivers/xz to multiarch
Convert devel/flex to multiarch
Convert devel/apr-util to multiarch