This will allow the Journaled object to reliability set the fields on the Journal
without calling init_journal (which is a before_save hook and shouldn't be called
directly).
Some models (Changeset) require custom options passed to
acts_as_activity_provider but acts_as_journalized wasn't accepting these
for :timestamp or :author_key
So the initial journal would have the changes from an Object#new
to the created version of the Object. Also includes a change to the
database migration in order to create these initial journals for
all journaled Objects.
In one case in a plugin (not able to reproduce in core) journal_attributes_for_user
would set the :user to something different than what's in updated_by thus assigning
the Journal to the wrong user.
acts_as_journalized called changes as per ActiveRecord::Dirty
(see http://ar.rubyonrails.org/classes/ActiveRecord/Dirty.html#M000291),
the journalized model Changeset :has_many changes though, which
made the call return a list of associated objects instead of the
intended list of changed attributes. Replaced changes with the code
from AR::Dirty to work around that.