Don't rely on Hash key's ordering

If we set encoding latin1 for a PostgreSQL database, it calls
PostgreSQLAdapter::create_database with options that have,
among other things:

  { 'encoding' => 'latin1' }

Then, we use reverse_merge(:encoding => "utf8") to setup the default
encoding. In the end, the hash looks like:

  { :encoding => 'utf8', 'encoding' => 'latin1' }

The call to options.symbolize_keys calls to_sym on each_key of this
Hash. It usually means that the encoding passed overwrites the default
utf8, but it's not guaranteed. So, we shouldn't rely on it.

The same was happening in ActiveRecord::ConnectionHandling.
Merge pull request #8959 from vitorbaptista/master

Don't rely on Hash key's ordering to configure default options
document Intercepters in ActionMailer guide
Fix date_select :selected option so you can pass it nil
Merge pull request #8965 from colinbm/date_select_value

Fix date_select :selected option so you can pass it nil
Merge pull request #8967 from senny/add_interceptor_to_am_doc

document Intercepters in ActionMailer guide