API: Region: Add Region.ALL

`Region.ALL` represents the entire 2D frame from -∞ to +∞ in both the x
and y directions.  This is useful to pass to functions that take a
`region=` parameter to say that we want the whole frame considered.  This
is really quite nice as it behaves as you might expect with functions
such as `contains()`, `intersect()` and `extend()` without any special
casing.

In the 0.20 release the only public function which took a `region=`
parameter was `ocr()`.  In this case the parameter defaulted to `None`
meaning the whole frame.  It now defaults to `Region.ALL` with the same
meaning as before.  Passing `region=None` to `ocr()` is deprecated so in
the future we can change its meaning to mean the empty region consistent
with the return value of `Region.intersect()` and the region parameter
of `TextMatchResult` as returned from `match_text()`.
API: Region: Make intersect commutative and associative

`intersect` returns None if the two given regions don't intersect.  By
making `intersect` a `@staticmethod` `None` can be passed as either
argument rather than having to be the second.  This allows constructions
such as:

    Region.intersect(Region.intersect(a, b), c)

or

    reduce(Region.intersect, [a, b, c], Region.ALL)

to behave consistently if any of `a`, `b` or `c` are either `None` or
don't overlap with any of `a`, `b` or `c`.

`Region.intersect` has not yet been in a public release so this is not
considered an API break.
API: Region: Add Region.translate

This is a convenience function implemented to help with the implementation
of passing `region=` to `stbt.match()`