Adding the first version of the testsuite tool

The testsuite tool will be used for testing future tools. This
commit also introduces a directory structure for the project:

  - /bin   Executable files.
  - /lib   Library function files.
  - /test  Tests for the libraries.

Apart from the /test folder, the project tries to follow the FHS
standard.

Library files contain only functions which should be prefixed
by the file name. Executable files point to those libraries and
expose them as a command.
Describing the project in the root README.md

The README file is formatted for better display on GitHub, but it
should also be readable as plain text. It introduces the project
vision, the list of tools and some examples.
Enabling word expansion on zsh for testsuite.

zsh required the SH_WORD_SPLIT option in order to behave
like other POSIX shells.
if and for code style changes

Putting if/then and for/do keywords on the same line, adding a
blank line before nested conditionals and loops.
Extracting testsuite_run from testsuite_file function

In order to run tests from multiple files in the future
iterations, testsuite_run was extracted from testsuite_file.

Now testsuite_list includes the relative path to the provided file
and testsuite_run works by iterating on the testsuite_list output.
Improved test runner to allow targeting directories

Now testsuite can target directories and run multiple test files
at once.

Test files are now required to have the '.test.sh' extension, so
the runner won't pick up non-test files.

testsuite_file was refactored into testsuite_run/testsuite_process
and its the same function for running single files or full dirs.

README file and help text on testsuite_help were modified to reflect
changes.

Test files on the test/ folder are still illustrative. Another suite
was added with basic shell tests to experiment with multiple files.
Extracting shell name lookup outside function

$current_shell now is a script-level $testsuite_current_shell and
the shell name lookup is executed only once
First real tests added, testsuite debug and setup/teardown

Tests for basic functions (the testsuite dispatcher, empty
placeholder and help), added testsuite_debug as a non-silent
alternative to testsuite_run and the $testsuite_silence script
level variable.

Setup and teardown functions were also added
Experimental stack tracing

testsuite_external was extracted from testsuite_exec to implement
an experimental stack tracing when errors occour.

Debug mode and PS4 variables are now handled by the external script
handler that executes the test functions in separate shell instances.

Detection for ksh, zsh and bash were needed for the first time to
retrieve the sourced bash files (a non-standard but widely available
feature).
Busybox support, better command portability

Calls to ps were changed to more portable versions.

Unfortunately, a check for busybox is needed to detect it and launch
its appropriate shell instance. This was not tested on real embarked
devices using it though.

Calls to head and tail using custom parameters were removed.
Multiple report types, compatibility with ash and pdksh

pdksh does not support $.sh.file so a quick check was added.

Functions for modular report types were added. testsuite_run now
display tests as dots, testsuite_spec displays as a list.

Improvements on zsh stack trace to use only the basename of the
file on each trace line.
Trying out a travis job

Commiting a .travis.yml file, a Travis badge on the README and proper exit
code handling for testsuite.

Main exit status for testsuite run/spec and Travis config
Adding environments for shells and badge for Travis
Experimental code coverage reports, more tests

  - Added reporting modes for code coverage. Current version runs on
testsuite cov [file] and just print out the sources of the files
with the number of passes for each line on the left.
  - Added $SHELL fallback for testsuite_current_shell
  - Fixed sed calls for old and unusual versions (specially OS X)
Added installation instructions
Fix typo on sed expression for coverage line match
Extracted post-processing in testsuite_post_cov

The function that formats the coverage output was extracted
from its main command to improve testability.
More environments on Travis.
Output improvements and tests for the library itself

testsuite_process covered for 3 distinct cases, testsuite_post_cov
covered
Formatting and naming refactoring

Changed names to be more consistent, fixed implicit variable scope
on testsuite_external, reordered functions by their groups.
Code style improvements, comments and cleanup

The setup and teardown functions were also removed until
they're needed.