Always apply Time.zone when available
More defensive serialization to catch a strange bug

ActiveRecord would sometimes re-serialize the already-dumped YAML
string back to the database, which would then re-re-serialize on the
next save, and so on creating a chain of "--- \\\\n\"--- \\n ...".
Best guess is that somehow querying a bad value just passes the string
through to the model instead of a schedule, which then gets passed
back to dump when saving. Not sure if this addresses the root of the
problem since it was happening to records with previously known good
schedule values.
Fix macro by using shared examples
Updated gem development dependencies