stage1: implementation of exec diagnostic wrapper

Wrapper performing the chroot() and exec() of apps for providing more
informative errors in the face of low-level interpreter failures.

Demonstration:
/tmp/ene# ls -l
total 2044
-rwxr-xr-x 1 root root 1033720 Dec 17 12:37 bash_no_interp
-rw-r--r-- 1 root root 1033720 Dec 17 12:37 bash_non_executable
-rwxr-xr-x 1 root root      34 Dec 17 18:32 shebang_enoent.sh
-rwxr-xr-x 1 root root      18 Dec 17 18:31 shebang_slash_bash_no_interp.sh
-rwxr-xr-x 1 root root      21 Dec 17 18:30 shebang_recursive_slash_shebang_enoent.sh
/tmp/ene# for i in *.sh; do echo $i:; cat $i; done
shebang_enoent.sh:
#!/this/shebang/interp/is/missing
shebang_slash_bash_no_interp.sh:
#!/bash_no_interp
shebang_slash_shebang_enoent.sh:
#!/shebang_enoent.sh

/tmp# ./diagexec ene/ /bash_no_interp
Error: Unable to open "/lib64/ld-linux-x86-64.so.2": No such file or directory
/tmp# ./diagexec ene/ /bash_non_executable
Error: "/bash_non_executable" is not executable
/tmp# ./diagexec ene/ /shebang_enoent.sh
Error: Unable to open "/this/shebang/interp/is/missing": No such file or directory
/tmp# ./diagexec ene/ /shebang_slash_bash_no_interp.sh
Error: Unable to open "/lib64/ld-linux-x86-64.so.2": No such file or directory
/tmp# ./diagexec ene/ /shebang_recursive_slash_shebang_enoent.sh
Error: Unable to open "/this/shebang/interp/is/missing": No such file or directory
/tmp#
stage1: integrate /diagexec wrapper into rkt run

Use /diagexec for launching the container's apps to assist understanding
execution interpreter problems.  No substantial overhead is introduced in the
normal/success case, diagnostics are only attempted when execv() of the target
fails.

Examples of the assistance provided:

  ~# bin/rkt run imgs/nobash.aci # bash script without /bin/bash
  Error: Unable to open "/bin/bash": No such file or directory
  Sending SIGTERM to remaining processes...
  Sending SIGKILL to remaining processes...
  Unmounting file systems.
  Unmounting /proc/sys/kernel/random/boot_id.
  All filesystems unmounted.
  Halting system.

  ~# bin/rkt run imgs/noexec.aci # file with no execute bits
  Error: "/noexec.sh" is not executable
  Sending SIGTERM to remaining processes...
  Sending SIGKILL to remaining processes...
  Unmounting file systems.
  Unmounting /proc/sys/kernel/random/boot_id.
  All filesystems unmounted.
  Halting system.

  ~# bin/rkt run imgs/noldlinux.aci # ELF program without interp
  Error: Unable to open "/lib64/ld-linux-x86-64.so.2": No such file or directory
  Sending SIGTERM to remaining processes...
  Sending SIGKILL to remaining processes...
  Unmounting file systems.
  Unmounting /proc/sys/kernel/random/boot_id.
  All filesystems unmounted.
  Halting system.

  ~# bin/rkt run imgs/noldlinuxbash.aci # script with bash without ELF interp
  Error: Unable to open "/lib64/ld-linux-x86-64.so.2": No such file or directory
  Sending SIGTERM to remaining processes...
  Sending SIGKILL to remaining processes...
  Unmounting file systems.
  Unmounting /proc/sys/kernel/random/boot_id.
  All filesystems unmounted.
  Halting system.

 Fixes #286
Merge pull request #300 from vcaputo/diagexec_post_make

exec diagnostic wrapper for stage1