More flexible MemorySolutionHistory

By checking our saved times against system time we no longer assume
that we're always going forwards in time when storing and backwards
when retrieving.