OCR: Support tesseract writing to files with any extension

The second argument to the tesseract command line tool is "output base"
which is a filename to which an extension will be appended.  Unfortunately
this extension varies depending on the arguments passed to tesseract and
even varies between different versions of tesseract[^1].

Using a temporary directory means that we don't need to know the extension
in advance and we can read the output independent of the extension that
tesseract appends.

[^1]: In hOCR mode tesseract 3.02 will write to base.html whereas 3.03 will
      write to base.hocr.
Refactor: _tesseract: Require that a frame to be passed in

This removes a dependency on `Display` from `_tesseract` making it a pure
function depending entirely on it's arguments and producing no
side-effects[^1].  This makes uses of it clearer.

[^1]: Or close enough.
Refactor: _tesseract: Allow passing a `Gst.Sample` as frame

`match_text`, which will be added in the next commit, will return the
timestamp of the frames it analyses.  To do this it will need the extra
metadata attached to `Gst.Sample` that is not available when dealing with
images in `numpy.ndarray` format.  To support this this commit introduces
the ability to pass a `Gst.Sample` to `_tesseract` itself.  It has the
pleasant side-effect of reducing copying.
OCR: Add stbt.match_text()

`match_text` is intended to be used like `detect_match`, etc, but for
text.  You search for a specific piece of text and it returns extra
information including the bounding box of the detected text.

It uses the tesseract hOCR mode.  hOCR is an XHTML subset with additional
information embedded such as word locations.