stbt.py: Make all logging output UTF-8

`stbt.ocr()` returns `unicode` strings objects and prints what it reads
to the logs using debug.  This in turn goes to `sys.stderr`.  If OCR has
read any characters outside of the ASCII subset of Unicode (the default
encoding with Python 2) calling `debug` could cause a
`UnicodeEncodeError`[^1].

With this commit all logging output is written as UTF-8.  I think this is
reasonable as it may be consumed by machine rather than a human and we
are unlikely to translate these debugging messages.  The same is not true
of the uses of `sys.stderr` still in stbt.py as they are interactive and
intended to be read by the user.

[^1]: By default whether you get a `UnicodeEncodeError` depends on the
      environment, whether stderr is connected to a TTY amongst other
      things.  So you could get a `UnicodeEncodeError` when writing to a
      file, but not at the terminal!
OCR: refactor into seperate _tesseract function

This will be useful for adding additional functions which use tesseract.
OCR: Add optional "lang" argument

Different languages use different glyphs, have different charactor
frequencies and most dramatically have different words in their
dictionaries.  Our OCR engine uses knowledge of the language it is
attempting to read to resolve ambiguities and to weight different
possibilities.

This commit adds an optional argument "lang" to `stbt.ocr` so this
information can be passed through to the underlying OCR engine.
OCR: Return utf-8 object rather than string

Tesseract outputs utf-8 encoded text files.  This allows it to represent
characters outside of 7-bit ASCII such as "£", ligatures, etc.  Up till
now stbt.ocr has also returned strings with the content encoded in utf-8
within.  This is unhelpful if you want to compare against known strings
in a test script.  For example, previously:

    assert '£100' == stbt.ocr()

Would fail as '£100' cannot be represented in 7-bit ASCII.  and:

    assert u'£100' == stbt.ocr()

Would fail as stbt.ocr would return '\xc2\xa3100'.

With this change `stbt.ocr()` would now return u'£100' which is clearer
and simpler to deal with.  This is technically an API break but I don't
expect it to break any real-life test cases.
OCR: Report region searched within in debugging

This is particularly useful if the region is not hard-coded in the test
scripts but generated on the fly from what can be seen on screen.

I've had to disable pylint's E1103 as it was giving false positives with
pylint 0.25 on Travis but not with pylint 1.1.0 on my machine.  The errors
were of the form:

    E1103:715,21:_tesseract: Instance of 'Region' has no 'y' member (but
                             some types could not be inferred)

Which sounds pretty false-positive prone to my ear anyway.
OCR: Scale image up 3x before passing to tesseract

Reduces error rate by a factor of 6 in testing.  See blog post "Improving
OCR Accuracy" for more information:

[1]: http://stb-tester.com/blog/2014/04/14/improving-ocr-accuracy.html
OCR: Normalise similar looking but meaning free charactors from tesseract

Tesseract sometimes has a hard job distinguishing certain glyphs such as
ligatures and different forms of the same punctuation.  We strip out this
superfluous information improving matching accuracy with minimal effect on
meaning.

This means that `stbt.ocr()` gives much more consistent results improving
reliability when matching against known text or when comparing read text
between invocations of `stbt.ocr()`.

See blog post "Improving OCR Accuracy" for measurements and more
information:

http://stb-tester.com/blog/2014/04/14/improving-ocr-accuracy.html
Merge pull request #146 from wmanley/ocr-accuracy

OCR improvements