Region API consistency and helper functions

This is a series of changes inspired by @lewishaley's [perceptive comment on a previous review](https://github.com/wmanley/stb-tester/commit/604ff6182658de0bbf3d9f2256bfc57b7a508b3c#commitcomment-7133004) about the inconsistency of use of `Region` as a parameter to functions.  These changes are intended to correct these inconsistencies by enhancing `Region` to handle infinities and then using the (not so) special value `Region.all` to represent the whole frame where we want to.
Just a thought that maybe this shouldn't return a new region. If you call `some_region.translate`
it sounds like you would move the `region` object you are calling it from, otherwise it's more
of a `duplicate_and_translate` you're doing. It just seems incorrect/unexpected that a new object
is created from a function whose name indicates otherwise (the docstring notwithstanding).

Although it's maybe a bit of a much-of-a-muchness, perhaps you want a non-class-linked function,
i.e. a standalone `translate_region` function, if the goal is to not modify the original region.