Refactor time key and tag key mixins

This PR refactors the `SetTimeKeyMixin` and the `SetTagKeyMixin`.

The initial idea was to alter the possible configuration options for those mixins. However, this was considered to be too specific to our problem at hand. In the course of the implementation the refactoring represented in this PR evolved and I did not want to hold it back. I hope it makes the code clearer.

This PR is best reviewed commit by commit.
https://github.com/fluent/fluentd/blob/a80bb4a80ab7d97c58f00abf48b4a679abc1d92f/lib/fluent/config/element.rb#L63

The important is calling `[]` or `has_key?` method. Fluentd checks the parameter typo so removing `conf['utc']` causes `utc is not used`.

https://github.com/fluent/fluentd/blob/a80bb4a80ab7d97c58f00abf48b4a679abc1d92f/lib/fluent/engine.rb#L81