extra/runner: Test runner & reporting system

Scripts to simplify bulk running of stb-tester scripts & reporting. See
`extra/runner/README.rst` for an overview. For each failed test, the
report tries to figure out *why* it failed, to save you time. In the
near future I'll add a way for the user to add their own failure
classifications.

The report is a set of static HTML files and plain-text log files:
`index.html` presents a table with a row for each testrun, and each
testrun subdirectory contains another `index.html` with detailed
information and links to the logs. Set up a web server like apache or
nginx to serve these files (or just view them locally using a `file://`
URL).

Clicking on a row in the report displays the details for that testrun in
the right-hand pane. You can use the up and down arrow keys to navigate
through the testruns.

The report uses Twitter's Bootstrap[1] for an easy-to-use, good-looking
stylesheet; and JQuery, a JavaScript library that simplifies DOM
manipulation and deals with cross-browser compatibility issues. We also
use Bootstrap's JavaScript library for the "affix"[2] behaviour of the
right-hand pane with the testrun details. The table is sortable (click
on any of the headers) thanks to another JavaScript library,
`sortable.js`. All these libraries are hosted publically and free of
charge by various CDNs (Content Delivery Networks) so we don't have to
serve them ourselves.

[1] http://getbootstrap.com/2.3.2/
[2] http://getbootstrap.com/2.3.2/javascript.html#affix

Dependencies (with the corresponding Fedora/RedHat and Debian/Ubuntu
package names):

* jinja2: python templating library (python-jinja2)
* moreutils: for the `ts` timestamp utility (moreutils)
extra/runner/run: `ps --ppid` that works on BSD/OSX
extra/runner/run: Show "-t" tag in generated report

If you are running multiple instances of `run` in the same parent
directory (for example if you have multiple systems-under-test connected
to the same PC), or if you intend to merge the testrun directories from
several different PCs into a single report, `run -t "my tag"` adds the
given tag to each testrun directory name so that if two tests happen
to be started at the same second, the directory names won't conflict.

Now, that tag is also shown in the generated `index.html` report. For
example, you can set the tag to the hostname of the system-under-test so
that you can easily tell apart the different systems you were testing.

This introduces a generic mechanism for adding extra columns to the
report: Each line in the file <testrun directory>/extra-columns is
treated as a tab-separated (column name, column value) pair. This will
allow me to add extra data without having to modify `report.py` and
`templates/*.html`.
extra/runner: Show shorter relative path to test script in report

The table in the report is already short on horizontal space, so we want
the test name to be as short as possible, but still unambiguous. I
assume that the test script is in a git repository, and I use the path
of the script relative to the repository root. We can support other
source control systems as the need arises.

I could have used `git rev-parse --show-toplevel` instead of
`--git-dir`, but that requires git v1.7.0 (whereas `--git-dir` exists
since v1.0).