ConnectionPool, unify exceptions, ConnectionTimeoutError

As a result of different commits, ConnectionPool had become
of two minds about exceptions, sometimes using PoolFullError
and sometimes using ConnectionTimeoutError. In fact, it was
using ConnectionTimeoutError internally, but then recueing
and re-raising as a PoolFullError.

There's no reason for this bifurcation, standardize on
ConnectionTimeoutError, which is the rails2 name and still
accurately describes semantics at this point.

History

In Rails2, ConnectionPool raises a ConnectionTimeoutError if
it can't get a connection within timeout.

Originally in master/rails3, @tenderlove had planned on removing
wait/blocking in connectionpool entirely, at that point he changed
exception to PoolFullError.

But then later wait/blocking came back, but exception remained
PoolFullError.

Then in 02b233556377 pmahoney introduced fair waiting logic, and
brought back ConnectionTimeoutError, introducing the weird bifurcation.

ConnectionTimeoutError accurately describes semantics as of this
point, and is backwards compat with rails2, there's no reason
for PoolFullError to be introduced, and no reason for two
different exception types to be used internally, no reason
to rescue one and re-raise as another.  Unify!
Accept belongs_to assoc. keys in ActiveRecord queries

Allows you to specify the model association key in a belongs_to
relationship instead of the foreign key.

The following queries are now equivalent:

Post.where(:author_id => Author.first)
Post.where(:author => Author.first)

PriceEstimate.where(:estimate_of_type => 'Treasure', :estimate_of_id => treasure)
PriceEstimate.where(:estimate_of => treasure)
Merge pull request #7601 from jrochkind/connection_pool_unify_exceptions

ConnectionPool, unify exceptions, ConnectionTimeoutError
Action Mailer async flag is true by default using a Synchronous impl
fixed support for DATABASE_URL for rake db tasks
- added tests to confirm establish_connection uses DATABASE_URL and
  Rails.env correctly even when no arguments are passed in.
- updated rake db tasks to support DATABASE_URL, and added tests to
  confirm correct behavior for these rake tasks.  (Removed
  establish_connection call from some tasks since in those cases
  the :environment task already made sure the function would be called)
- updated Resolver so that when it resolves the database url, it
  removes hash values with empty strings from the config spec (e.g.
  to support connection to postgresql when no username is specified).
warning removed.

1. Unused variable
2. possibly useless use of a variable in 
void context
Fix build Rails.queue

see 34b23e7110a3a13cf157608cefc9b5701017bf39
remove '.rb' from require call
Merge pull request #7610 from arunagw/warning_removed_action_pack

warning removed.
Merge pull request #7615 from NARKOZ/patch-2

Remove '.rb' from require call
Merge pull request #7612 from arunagw/build_fix_queue

Fix build Rails.queue
Merge pull request #7521 from graceliu/fix_database_url_support

Fixed support for DATABASE_URL for rake db tasks
Added additional comments on how to use the "type" column without
single-table inheritance by overriding it in your ActiveRecord
Model.
Merge pull request #7605 from revans/master

Add docs to inheritance_column method, explaining how to override it
to be able to use the "type" column without STI [ci skip]
Use the SynchronousQueue as default in production and development.

We should not let the users use the ThreadedConsumer without know about
the risks
Allow users to configure the queue for the mailers

This allow the users to do:

    config.action_mailer.queue = MyQueue.new

and

    class UsersMailer < ActionMailer::Base
      self.queue = MyQueue.new
    end
Define a SynchronousQueue for test in Action Pack.

We don't need to rely on rails/queueing in Action Pack tests
Updating the documentation to ActionMailer::Base.queue
Remove the queue configuration from the environments templates since the
default is the SynchronousQueue.
Update documentation for CollectionProxy