[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.
Similarly, 'gets the latest point in time in the TimeRange'