GDB: add `--gdb-prerun-commands` option to GDB plugin

This feature allows custom GDB commands to be executed before the
actual binary is run. What it can do then, is only limited by the
user's goals.

This is intended to allow complex applications, such as QEMU,
to be debugged inside Avocado tests. Configuring GDB for QEMU,
for example, involves passing signals to the application that
would otherwise result in an event that would stop the debugger.

Signed-off-by: Cleber Rosa <crosa@redhat.com>
Merge branch 'gdb_pre_run_commands' of https://github.com/clebergnu/avocado into clebergnu-gdb_pre_run_commands

Conflicts:
	man/avocado.rst
Merge branch 'clebergnu-gdb_pre_run_commands'
Reorganize requirements.txt and Travis CI job

Document requirements.txt, split it into 3 files:

 * requirements.txt - Used to install deps for functionality
 * tests-requirements.txt - Used to install deps to test avocado
 * travis-requirements.txt - Used exclusively for Travis CI jobs

Also, clean up and simplify Travis install job section.

Signed-off-by: Lucas Meneghel Rodrigues <lmr@redhat.com>
Merge pull request #268 from lmr/reorganizing-travis-job

Reorganize requirements.txt and Travis CI job
Introduce new runner option --wrapper.

Introduce a new command line option (--wrapper) to wrap
every new process created with help of module `avocado.utils.process`
inside a support script.

Wrappers can be global, so it will wrap every process or
you can set a wrapper to a specific program.

* Set wrapper to ltrace.sh on each process:
    avocado run --wrapper ltrace.sh sometest
* Set wrapper to ltrace.sh and binary myprog:
    avocado run --wrapper ltrace.sh:myprog sometest

You can provide multiples --wrapper options,
but only one global wrapper can be active at time.

For API, the class WrapProcess accepts an optional argument `wrapper`.
If it is defined, then use this parameter as the wrapper script.
If undefined, then it will look for the value inside
`runtime.CURRENT_WRAPPER` and use it.

If `runtime.CURRENT_WRAPPER` is None, then just behave like the
`SubProcess` class.

Signed-off-by: Rudá Moura <rmoura@redhat.com>
examples.wrappers: Scripts to use with option --wrapper.

Scripts to use with command line option --wrapper.

* dummy.sh    Do nothing (use as a template).
* strace.sh   Run process on strace, output: strace.log.<pid>
* ltrace.sh   Run process on  ltrace, output: ltrace.log.<pid>
* perf.sh     Record process on perf, output: perf.data.<pid>
* valgrind.sh Run process on valgrind's memcheck, output: valgrind.log.<pid>

Usage:

  avocado run datadir --wrapper examples/wrappers/strace.sh
  avocado run datadir \
              --wrapper examples/wrappers/ltrace.sh:make \
              --wrapper examples/wrappers/perf.sh:datadir \

Signed-off-by: Rudá Moura <rmoura@redhat.com>

Valgrind.

Signed-off-by: Rudá Moura <rmoura@redhat.com>
selftests: Add functional tests for --wrapper feature.

Add some functional tests to explore the --wrapper feature.

Signed-off-by: Rudá Moura <rmoura@redhat.com>
docs+man: Add documentation for the --wrapper feature.

Add documentation manual page part for the command line
feature `--wrapper`.

Signed-off-by: Rudá Moura <rmoura@redhat.com>
Merge pull request #265 from ruda/utils_process_wrapper_V3

Introduce wrap process inside the tests [V3]