Add a public `stbt.draw_text` api

Based on the previously internal Display.draw_text, but now made
publicly available.
The draw_text method is now imported for use with stbt-run.
A unit test has also been added to confirm that the text is drawn
correctly.
test_draw_text: Disable on Mac OS X

Because the GStreamer elements vp8enc and webmmux don't work on OS X
so this test would always fail.
test_draw_text: Cleanup: Wrap long lines

And reorder arguments for consistency with the other tests.
test_draw_text: Cleanup: Use `--save-video` instead of explicit sink pipeline

The effect is the same; this is just simpler.
test_draw_text: Don't continue with test if early steps fail

If the first `stbt-run` fails, the second `stbt-run` is bound to fail
too, so the test would correctly report a failure both with and without
this commit. However the log output from the second `stbt-run` would be
confusing; this way you only see the relevant error from the first
`stbt-run`.
test_draw_text: Use "live" videotestsrc

videotestsrc generates frames as fast as it can, which on a typical
system is much faster than 24 frames per second. The `duration_secs`
parameter of `stbt.draw_frames` acts on the timestamps from the video
stream, not the wall-clock time, so using `duration_secs=3` resulted
in the text being displayed only for a very brief period of time (too
fast to even see it).

Though the previous implementation did work, it might give the
impression that `duration_secs` takes a number in milliseconds.

There are two ways to slow down the videotestsrc to real time: Set the
sink to `sync=true` (we use `sync=false`; see `sink_pipeline` in
tests/stbt.conf), or set videotestsrc's `is-live` property. `sync=true`
causes other problems (due to the delays and jitter introduced by the
image processing) so we use `videotestsrc is-live=true`.
stbt-run: Don't bring `draw_text` into script's namespace

We want to encourage users to explicitly `import stbt` in their scripts,
because it's more pythonic and less "magical", and it allows running
pylint over the scripts. Other recent new functions like `frames` and
`get_config` weren't added to this list for the same reason.

This was added in b6a6c015, but was never part of a tagged release so we
can still remove it from the public API. We'll eventually deprecate
these, and later remove this code altogether, but for now it remains for
compatibility with existing user scripts.
Document `stbt.draw_text` in the official API doc

Note that the change to README.rst is the result of running `make doc`
after the change to api-doc.sh.

I edited the docstring so that it displayed nicely in the generated
manpage (the docstrings and README are in reStructuredText format, so
you need a double linebreak in the source to get a new paragraph in the
output).
Merge branch 'draw_text'

* draw_text:
  Document `stbt.draw_text` in the official API doc
  stbt-run: Don't bring `draw_text` into script's namespace
  test_draw_text: Use "live" videotestsrc
  test_draw_text: Don't continue with test if early steps fail
  test_draw_text: Cleanup: Use `--save-video` instead of explicit sink pipeline
  test_draw_text: Cleanup: Wrap long lines
  test_draw_text: Disable on Mac OS X
  Add a public `stbt.draw_text` api
extra/runner summary report: Upgrade tablequeryjs to v0.1.5

v0.1.4 allows the user to pass callback functions to be called when the
user performs a new search. This will be useful in the next commit,
where we'll display a count of total tests run, passed tests, failures
and errors.

Note that v0.1.4 removes the dependency on jQuery UI. Release notes:
https://github.com/asimihsan/tablequeryjs/releases/tag/v0.1.4

v0.1.5 fixes a bug in v0.1.4.
extra/runner summary report: Total/pass/fail/error counts

Display basic stats of a job: Total number of tests; number of passed
tests (and pass rate); number of failures (UITestFailures, i.e. the
system-under-test didn't behave as expected); number of errors (i.e.
bugs in the test script or problems with the test infrastructure).

Counters are updated on the client side (in the browser). If you've
filtered the results via the "filter" field, the counters only reflect
the visible rows of the table. The counts are displayed below the filter
input field, as a hint that they are affected by the filter.

Based on a patch by Máté Szendrő.
irnetbox-proxy: Add copyright notice

This program was written by Steve Stagg under contract to YouView, and
modified by me, also under contract to YouView.
irnetbox-proxy: Minor wording change in documentation
pylint checker that ensures files given to `wait_for_match` etc. exist

The checker looks for string literals ending in ".png" and ensures they
exist on disk. It ignores strings generated programmatically and other
false positives found in our existing corpus of stbt scripts; see the
selftests for examples.

See the file's top-level docstring for usage instructions.

Development notes
-----------------

While developing this I found ipython's tab-completion extremely helpful
in understanding pylint's `astng` API. I used the following code in
ipython, because I didn't figure out how to run StbtChecker from
ipython:

    from logilab.astng.builder import ASTNGBuilder
    from logilab.astng.utils import ASTWalker
    nodes = list()
    class Test(ASTWalker):
        def __init__(self):
            ASTWalker.__init__(self, self)
        def set_context(self, node, child_node):
            pass  # ASTWalker.walk expects this method to exist.
        def visit_const(self, node):
            nodes.append(node)
    Test().walk(ASTNGBuilder().file_build('test.py'))

After evaluating the above you can introspect `nodes[0]` etc.

`ASTWalker` also has a `visit_str` which as far as I understand is
supposed to be for string literals, but it didn't work for me (it never
got called). So I used `visit_const` instead.
extra/stbt_checker.py: Compatibility fix for pylint <= 0.25

Symbolic identifiers (names) for pylint messages were added in pylint
version 0.26:
https://bitbucket.org/logilab/pylint/commits/b9dab5059b81#Lutils.pyF129

In pylint 0.25 and earlier, these message definitions expected a tuple
with 2 elements, not 3. pylint 0.26 still accepts the 2-element form for
backwards compatibility. Ubuntu 12.04, for example, still carries pylint
0.25.
extra/vm: Install & start `lirc` automatically

The user will still have to provide their own `lircd.conf` file
describing their remote control's infrared protocol.

This uses `DEBIAN_FRONTEND=noninteractive` to stop `apt-get` prompting
the user to select a hardware and infrared protocol configuration.
First, the available configurations are highly confusing, they don't
contain hardware like the RedRat3-II, and are unlikely to contain the
protocol that the user is interested in. Second, there is no interactive
terminal available during `vagrant up`, so the `apt-get install` command
would garble the terminal output and fail.
README: Consistent capitalization of "GStreamer"

And consistent package naming (use the Fedora names, i.e.
"gstreamer-plugins-bad" instead of "gst-plugins-bad").
README: We no longer recommend using LIRC for recording test cases

Because configuring LIRC with 2 different hardware devices (one for
receiving and one for emitting) is complicated; see
http://stb-tester.com/multi-lirc.html

Instead we recommend using "stbt record --control-recorder=stbt-control"
extra/pylint.sh: Fix error triggered by certain outputs from pylint

If pylint's output contained a "%", you'd get an "invalid format
character" error from printf.
extra/stbt_checker.py: Fix import for pylint >= 1.0

IASTNGChecker was renamed to IAstroidChecker.

See: https://bitbucket.org/logilab/pylint/diff/interfaces.py?diff2=bdcbb695e59a&at=default

Note: I haven't found any mention of it on the official site,
found it on https://github.com/rory/python-pylint-i18n/pull/1 instead.

Thanks to Máté Szendro for the patch.