Introduce a new helper: readlink_proc_pid_fd().

This helper will be used also by CARE.
Initial import of CARE v2.0.

This is a complete rewrite of CARE.
care: Fix how the prefix used in the archive is computed.

Before this patch, the full pathname was used as a prefix:

    $ care -o /tmp/foo.tar true
    $ tar -tf /tmp/foo.tar
    [...]
    /tmp/foo/rootfs/bin/
    /tmp/foo/rootfs/bin/true
    /tmp/foo/rootfs/lib64/
    /tmp/foo/rootfs/lib64/ld-linux-x86-64.so.2
    /tmp/foo/rootfs/lib64/ld-2.3.4.so
    [...]
    /tmp/foo/re-execute.sh
    /tmp/foo/README.txt
    /tmp/foo/proot

Now:

    $ care -o /tmp/foo.tar true
    $ tar -tf /tmp/foo.tar
    [...]
    foo/rootfs/bin/
    foo/rootfs/bin/true
    foo/rootfs/lib64/
    foo/rootfs/lib64/ld-linux-x86-64.so.2
    foo/rootfs/lib64/ld-2.3.4.so
    [...]
    foo/re-execute.sh
    foo/README.txt
    foo/proot

Reported-by: Antoine MOYNAULT <antoine.moynault@st.com>
care: Attach the archive destructor once it is fully created.

This avoids a lot of pointless messages emitted by the finalization
code.  Before ("test" does not exist):

    care error: can't open archive '/test/foo.tar': Failed to open '/test/foo.tar'
     warning: can't archive 're-execute.sh'
     warning: can't archive 'README.txt'
     warning: can't archive 'proot'
     info: ----------------------------------------------------------------------
     info: If the execution didn't go as expected: search for "conceal" in `care -h`.
     info: CARE output: /test/foo.tar
    care warning: can't initialize the care extension
    fatal error: see `care --help` or `man care`.

Now:

    care error: can't open archive '/test/foo.tar': Failed to open '/test/foo.tar'
    care warning: can't initialize the care extension
    fatal error: see `care --help` or `man care`.
Merge tag 'v3.2.1' into next
Remove use of *at syscalls, for the sake of portability.

*at syscalls require Linux >= 2.6.16 and Glibc >= 2.4, whereas PRoot
is supposed to work on any Linux 2.6 systems.
care: Preserve argument quoting when re-executing an alternate command.

Assuming a CARE archive was created this way:

    $ care echo 'A    test'
    [...]
    A    test
    [...]

Argument quoting is preserved when re-executing it as-is:

    $ ./re-execute.sh
    A    test

However, it was not the case when specifying an alternate command:

    $ ./re-execute.sh echo 'Another    test'
    Another test

This commit fixes this bug:

    $ ./re-execute.sh echo 'Another    test'
    Another    test

Fix-suggested-by: Christophe GUILLON <christophe.guillon@st.com>
Fix CARE user manual.
Fix CARE user manual.
care: Use "gnutar" format instead of "pax_restricted".

The previous format used to emit warnings about UTF-8 characters in
path names:

    care warning: can't write header for '/tmp/cédric': Can't translate pathname 'care-131122143632/rootfs/tmp/cédric' to UTF-8
care: use "cpio" format by default instead of "tar" format.

Technically, "tar" format does not support non-ordered archive.  For
examples, it is possible to create a tar archive that can't be fully
extractable:

    $ mkdir a
    $ touch foo
    $ chmod -w a
    $ tar -cf test.tar a foo

    $ chmod +w a
    $ touch a/b
    $ chmod -w a
    tar -rf test.tar a/b

    $ tar -tf test.tar
    a/
    foo
    a/b

    $ tar -xf test.tar
    tar: a/b: Cannot open: Permission denied
    tar: Exiting with failure status due to previous errors

Sadly, such "tar" archive can't be re-ordered in-place with libarchive:

    The library is inherently stream-oriented; readers serially iterate
    through the archive, writers serially add things to the archive.  In
    particular, note that there is currently no built-in support for
    random access nor for in-place modification.

    -- man 3 libarchive
care: Make licences banner customizable at build time.

This banner must contain all licenses from all libraries when building
care statically (the default).
care: Import first draft of the CLI stylesheet.
Search the initial command in "." if it contains at least one '/'.

This makes PRoot command lookup compatible with other shells (bash,
tcsh, ...).

Before:

    $ proot -w / bin/echo OK
    proot warning: 'bin/echo' not found (root = /, cwd = /, $PATH=[...])
    proot info: to execute a local program, use the './' prefix, for example: ./bin/echo
    fatal error: see `proot --help` or `man proot`.

Now:

    $ proot -w / bin/echo OK
    OK

Reported-by: Antoine MOYNAULT <antoine.moynault@st.com>
care: Minor changes on final hint messages.

The "-m" option for cpio is retains previous file modification times when
creating files.
kompat: Replace fcntl(F_DUPFD_CLOEXEC) with fcntl(F_DUPFD) only if required.

The check against the actual kernel version was missing in the enter stage.
Make build-time customizable licenses banner mechanism generic.

There were no reasons to make it specific to CARE.  Note, the licenses
object has to be specified explicitly, for instance:

    proot/src$ echo 'bla bla' > licenses
    proot/src$ env OBJECTS=cli/proot-licenses.o make
Change how to invoke the build and installation of CARE.

Before:

    $ make CARE=1
    $ cp care /...

Now:

    $ make care
    $ make install-care

Note: the default target is still "proot", i.e. the target "care" has
      to be specified explicitly.  Likewise, the "install" target
      installs "proot" only.
Make some warning messages tool-agnostic (PRoot, CARE, ...)
Check CARE is always built with its custom build environment.