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