Refactor event time writers

* Use `super` instead of `alias_method_chain`. This allows us to get rid of the method instantiation hack, as well as making the code much more readable.
* Greatly simplify `time_for`. Turns out most of the method's functionality is duplicating ActiveRecord's own Time coercion process. We only need to specify the application-specific stuff, like joining an Array, or explicitly throwing an exception if `Time.zone.parse` can't do its job.
* Probably shouldn't document a private method that might go away in the future.