Refactoring: Factor out loading templates

In preparation for adding `stbt.match`.

Internally we now pass around an `_AnnotatedTemplate` object rather than
an `numpy.ndarray` so we can attach the template name and any other
information we wish to. This tidies up an number of bits of code and
should make them more robust to changes in the future.
Refactor drawing MatchResults on frames

We can re-use this when adding the `stbt.match()` API.
Add `stbt.match` to search a single frame and return MatchResult

Added new API `stbt.match` which was previously conspicuous in its
absence.  It simply searches for a template match in a video frame,
returning a `MatchResult`, and notably not throwing an exception if the
template cannot be found.

This, in combination with the ability to treat `MatchResult` as a
boolean (be15b5d8) makes it much easier to compose matching operations
in user code. e.g.:

    assert stbt.match('template.png') or stbt.match('template2.png')
stbt.match: Add region parameter

This allows restricting the match operation to a specific area of the
screen.