Fixes support for ActiveModel::Dirty

This has always been broken, but I was waiting to see how it was
addressed in ActiveRecord::Enum before fixing to make sure I had
something that was more future-proof. The fix does not work in Rails
3.2 or 4.0, so it is disabled in ActiveRecord <= 4.0 which seems like
a good compromise.

Previously when using dirty attribute methods, it was hard to predict
whether you'd get the string value or the enum class instance. Now it
will always return the enum class instance for any of the attribute
change methods.
Merge branch 'active-model-dirty'