Expose match_template function so users can build their own match functions

Since stbt's translation to using pure python to do all its processing
(and just using Gstreamer as a source of video frames) with stbt 0.14,
and the introduction of the `frames()` utility to iterate over source
frames, it has been much more practical for users to create their own
image processing functionalities.

This commit makes stbt's core template matching algorithm public which
further enables users to write their own processes (I'll be making use of
it to expand the template matching front end API in a later commit.)

Because `match_template` requires actual images (in the form of numpy
arrays) as its arguments †, I have added some type checking which prints
a nice error message if the user specifies non-image arrays.

This commit also:
    (1) Adds `load_image()` so users don't have to delve into OpenCV to
    load images from disk to use in `match_template()`. This is almost
    indentical to all the instances where images are loaded in other
    stbt functions.
    (2) Adds documentation for the two added functions (_match_template
    was previously undocumented).
    (3) Adds selftests for the two functions (_match_template was tested
    by association with `detect_match` and `wait_for_match`, but now we
    test it explicitly and check its returned values).

† As opposed to the higher-level functions which take filepaths of the
images to load as their parameters.
Move `load_image` and `match_template` to main API section in source code

Following the previous commit which created these two public API functions,
it makes sense to move them to be with the other public functions.
wait_for_all_matches: multiple template matches per frame

This new front end API function lets users specify a list of templates,
all of which must match positively at some point before the `timeout_secs`
expires. This is useful when the object(s) you are attempting to match
appear and disappear from the video source too quickly for 2 sequential
`wait_for_matches`.

Instead, this function will grab a frame, match all unmatched templates
against the frame, and repeat until (1) all templates have been matched or
(2) `timeout_secs` expires. The returned object contains key/value pairs
of the template's filename and the positive MatchResult it returned when
its match was detected.

Users should note that the more templates given to be matched, the less
frames will be matched against per second.

This commit adds a new exception to partner the matching function:
`MatchAllTimeout`. This is raised by `wait_for_all_matches` when it fails
to match all the specified templates. However, for ease of debugging, it
lists all the images it *did* match as well as all those it *didn't*.