Fix timezones

This is should fix problems of negative stop_times.
This is not meant to be merge right now, just for you to have a look and criticize.
I think we should have a `Factory<T>` data structure that own T, and with a `const T& Factory::get_or_create(const T&)` that return an object that will live as long as the Factory. It can be implemented with an underlying `std::set<T>`.

What do you think?