Introduce a new `PGRange` class that PostgreSQL Ranges map to.

Unlike Ruby Ranges, the new `PGRange` can support exclusive beginnings
and unbounded beginnings/ends. `PGRange` supports the most common
operations and provides a method to attempt to convert to a Ruby Range.
There are issues with some methods because it does not make
sense to enumerate unbounded ranges.