Add time zone-aware matcher support

This is the beginning of the time zone support inside Ruy.
It's better to split different changes into different commits. This commit includes some refactoring and tz feature.