[Review]: Added min() and max() to TimeRange

This includes two new functions to `TimeRange` so we can be sure that `min()` will be always smaller than `max()`,  avoiding to use `start()` and `end()` as we may have a negative timerange. 

This was discussed during the review of #1021 for the checking done in `goes.py`, where it assumes `start()/end()` is the smaller/largest value.
but... it may not be the latest, but the first.  Imagine a negative TimeRange, one that goes from 10:00 to 8:00 on the same day, the latest would be 8:00, and the first 10:00.  But the largest would be 10:00, and the smaller 8:00.