Add `<field>_was` methods to models

This adds support for reading previous field values to models.
This is done using ActiveRecord's was methods for its attributes.
When a field is added to a model, it defines `<field>_was` methods
for reading the record's previous value. This also fakes the
behavior with fake records. This allows the method to work with
both real and fake records. This is needed in distributed
programming like running background jobs. If a background job
wants both the value it was before and after a change, then that
has to be provided when the job is enqueued. This allows that.