Fix freeze applying to cloned objects

Previously, freezing a cloned ActiveRecord object froze the original
too. By cloning `@attributes` before freezing, we prevent cloned objects
(which in Ruby share state of ivars) from being effected by `#freeze`.

Resolves issue #4936, which has further information on this issue, as
well as steps to reproduce.

* Add a test case for `#freeze` not causing `cloned.frozen?` to be true.
* Clone @attributes before freezing in `ActiveRecord::Core`, then
  reassign the cloned, frozen hash to the frozen model's `@attributes`
  ivar.

/cc @steveklabnik
Support transactions in Migrator.run
Fix loading of fixtures when the column type is a postgres array of strings.

 - A string in an array of strings that has a quote char (') needs to have that quote char escaped if the array is getting wrapped in quote chars.
Merge pull request #10200 from calebthompson/ct-fix-freeze-freezing-cloned-models

Fix freeze applying to cloned objects
Merge pull request #10217 from mirasrael/make-migrator-run-transactional-4.0

Support transactions in Migrator.run

Conflicts:
	activerecord/CHANGELOG.md
Improve the error message
Merge pull request #10264 from cconstantine/master

Postgresql array columns don't properly escape single quote strings when loading fixtures
destroys association records before saving/inserting new association records

fixes bug introduced by  #3329
These are the conditions necessary to reproduce the bug:
- For an association, autosave => true.
- An association record is being destroyed
- A new association record is being created.
- There is a unique index one of the association's fields.
- The record being created has the same value as the record being
destroyed on the indexed field.

Before, the deletion of records was postponed until after all
insertions/saves.  Therefore the new record with the identical value in
the indexed field caused a non-unique value error to be thrown at the database
level.

With this fix, the deletions happen first, before the insertions/saves.
Therefore the record with the duplicate value is gone from the database
before the new record is created, thereby avoiding the non-uniuqe value
error.
Merge pull request #10183 from jholton/fix_association_auto_save

autosave_association issue that occurs when table has unique index