Use fake class for min and max in order for pickle to work

When freeze_time is used, min and max return real datetime objects. These objects cannot be pickled. datetime.min returns datetime(1, 1, 1, 0, 0). Pickle checks the class of datetime(1, 1, 1, 0, 0) which is then converted to a FakeDatetime. The classes do not match and the object is not pickled.

I have added min and max as fake objects to the classes.