extract deprecated association options to active_record_deprecated_finders
Add documentation for ActiveRecord::Observer.

The instructions about configuration covered only rails-specific usage.
Merge pull request #7043 from kytrinyx/documentation-ar-observer

Add documentation for ActiveRecord::Observer.
Add note about needing mysql superuser for unit tests.
add note about requiring gem dependencies before initialization [ci skip]
Add link to relevant rails guide to Active Record unit test docs.
Merge pull request #7044 from kytrinyx/documentation-ar-unit-tests

Add note about needing mysql superuser for unit tests.
Remove duplicated code in the AR::Store.
stop using class_attribute where methods/inheritance will suffice.
move the deprecated options into active_record_deprecated_finders
revises RUNNING_UNIT_TESTS to delegate stuff to the contributing guide
Merge pull request #7045 from kennyj/remove_duplicated_code_20120714

Remove duplicated code in the AR::Store.
Remove instance level quote_value method. This method is private and also exists in class method.
Remove duplicated unique index name.
Merge pull request #7048 from kennyj/tiny_fixes

[tiny fixes] Remove more duplicated code.
fix association :extend option
Only use prepared statements when bind variables are present

Prepared statements (prepare/execute/close) were being used unnecessarily
when no bind variables were present, and disabling prepared statement using
prepared_statements:false was principally broken. While bind variables were
correctly substituted with prepared_statements:false, the prepared statement
interface was still used, costing an extra two round trips per query.

In addition to making this behavioral change, I also cleaned up the internals
of exec_stmt and exec_without_stmt so that they behave the same (calling log
and constructing the ActiveRecord::Result in the same way).

Moving the check for binds.empty? to exec_query also will mean that several
code paths explicitly calling exec_without_stmt could be cleaned up to once
again call exec_query instead. I have also left the check for binds.empty? in
exec_stmt, since it is not a private method and could be called directly with
an empty binds array. For the sake of clarity in this patch, I have not made
those changes.

= The previous behavior =

When issuing a Foo.find(1) with prepared_statements:true, the bind variable
is present in the prepared query, and execute shows a value passed:

    Connect	root@localhost on rails_test
    Query	SET SQL_AUTO_IS_NULL=0
    Statistics
    Query	SHOW FULL FIELDS FROM `foos`
    Query	SHOW TABLES LIKE 'foos'
    Query	SHOW CREATE TABLE `foos`
    Prepare	SELECT  `foos`.* FROM `foos`  WHERE `foos`.`id` = ? LIMIT 1
    Execute	SELECT  `foos`.* FROM `foos`  WHERE `foos`.`id` = 1 LIMIT 1
    Close stmt
    Quit

When issuing a Foo.find(1) with prepared_statements:false, the bind variable
has already been removed and substituted with the value, but the prepared
statement interface is used anyway:

    Connect	root@localhost on rails_test
    Query	SET SQL_AUTO_IS_NULL=0
    Statistics
    Query	SHOW FULL FIELDS FROM `foos`
    Query	SHOW TABLES LIKE 'foos'
    Query	SHOW CREATE TABLE `foos`
    Prepare	SELECT  `foos`.* FROM `foos`  WHERE `foos`.`id` = 1 LIMIT 1
    Execute	SELECT  `foos`.* FROM `foos`  WHERE `foos`.`id` = 1 LIMIT 1
    Close stmt
    Quit

= With this patch applied =

When issuing a Foo.find(1) with prepared_statements:true, the bind variable
is present in the prepared query, and execute shows a value passed:

    Connect	root@localhost on rails_test
    Query	SET SQL_AUTO_IS_NULL=0
    Statistics
    Query	SHOW FULL FIELDS FROM `foos`
    Query	SHOW TABLES LIKE 'foos'
    Query	SHOW CREATE TABLE `foos`
    Prepare	SELECT  `foos`.* FROM `foos`  WHERE `foos`.`id` = ? LIMIT 1
    Execute	SELECT  `foos`.* FROM `foos`  WHERE `foos`.`id` = 1 LIMIT 1
    Close stmt
    Quit

When issuing a Foo.find(1) with prepared_statements:false, the bind variable
has been removed and substituted with the value, and the query interface is
used instead of the prepared statement interface:

    Connect	root@localhost on rails_test
    Query	SET SQL_AUTO_IS_NULL=0
    Statistics
    Query	SHOW FULL FIELDS FROM `foos`
    Query	SHOW TABLES LIKE 'foos'
    Query	SHOW CREATE TABLE `foos`
    Query	SELECT  `foos`.* FROM `foos`  WHERE `foos`.`id` = 1 LIMIT 1
    Quit
Fixing texts; down to three failing tests.

Conflicts:
	activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb
fixing tests to deal with data differences between prepared statements and non-prepared statements

Conflicts:
	activerecord/test/cases/query_cache_test.rb
teaching the mysql adapter how to typecast strings returned from the database