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
Simplify the code in schema cache

The use of default procs was unnessecary, made the code confusing to
follow, and made marshalling needlessly complex.
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
Fix router visualizer CSS and JS resources
Merge pull request #15291 from francocatena/router-visualizer-fix

Fix router visualizer CSS and JS resources
Merge pull request #15290 from sgrif/sg-consolidate-zero-scale-decimal

Remove special case in schema dumper for decimal without scale
[ci skip] Improve doc for ModuleConstMissing.guess_for_anonymous
print generators on failed generate

Let's say we just ran:

```
$ rails g migrate add_click_to_issue_assignment
```

We will get an error that looks like: 

```
Could not find generator migrate.
```

This patch adds all existing migrations to the output to make it easier for a developer to find a valid migration. 

```
Could not find generator "migrate". Please select a valid generator:
Rails:
  assets
  controller
  generator
  helper
  integration_test
  mailer
  migration
  model
  resource
  scaffold
  scaffold_controller
  task
```


It would be nice to do some spelling detection and suggest alternatives, but for now this should  help.