avoid using alias in generators

Ruby's alias produces public methods, causing a spurious Thor task
to be created.  For example, this is the reason MigrationGenerator
currently has two tasks:

    > ActiveRecord::Generators::MigrationGenerator.all_tasks.keys
    => ["singular_name", "create_migration_file"]

singular_name was meant to be an attribute, not a task.  Because it's
public, it gets called as a task every time the generator is invoked.

The fix is to ensure all generator methods have the correct
visibility.
Fixes URL generation with trailing_slash: true

URL generation with trailing_slash: true was adding a trailing slash
after .:format

    Routes.draw do
      resources :bars
    end

    bars_url(trailing_slash: true, format: 'json')
      # => /bars.json/

This commit removes that extra trailing slash
Bring the missing parameters back.
Simplify the code in schema cache

The use of default procs was unnessecary, made the code confusing to
follow, and made marshalling needlessly complex.
Remove `Column#primary`

It appears to have been used at some point in the past, but is no longer
used in any meaningful way. Whether a column is considered primary is
a property of the model, not the schema/column. This also removes the
need for yet another layer of caching of the model's schema, and we can
leave that to the schema cache.
Merge pull request #15282 from sgrif/sg-remove-column-primary

Remove `Column#primary`
use Proc.new to automatically do parameter checking for us
Merge pull request #15261 from hbin/missing_parameters

Bring the missing parameters back.
update docs to include html id for select_tag
Merge pull request #15277 from sgrif/sg-schema-cache-refactor

Simplify the code in schema cache
Merge pull request #15283 from oismail91/improve_doc_for_select_tag

update select_tag docs for customizing id
Remove duplicated parameter check on #where!

It seems that #where! is not designed to be used as a chained where.
See initial implementation at 8c2c60511beaad05a218e73c4918ab89fb1804f0.
So, no need to check twice.

We should not test #where!

https://github.com/rails/rails/pull/15285#discussion_r13018316
Merge pull request #15285 from sergey-alekseev/remove-active-record-where-duplicated-condition

Remove duplicated parameter check on #where!
Future port c8ddb61
glob_param is never used, so rm

this also changes the constructor.  We don't need to pass more options
than "defaults" (whatever defaults are, ugh. probably another hash of
stupid stuff).
Merge pull request #15289 from zzak/future_port_c8ddb61

Future port c8ddb61 [ci skip]
push options decomposition up so we can extract
default value is never used, so make it required
Constraints contructor should always return a Constraints object

I know, it's crazy.
Remove special case in schema dumper for decimal without scale