Always escape string passed to url helper.

Makes it clear that anything passed with the helper must not be percent encoded.

Fixes previous behavior which tricks people into believing passing
non-percent-encoded will generate a proper percent-encoded path while in
reality it doesn't ('%' isn't escaped).

The intention is nice but the heuristic is broken.
Optimize URI escaping

The URI::Parser#escape method is a general use method that has to deal
with a variety of input however our use of it is limited in scope so
we can increase the performance by implementing our specific needs
within ActionDispatch::Journey::Router::Utils directly.

If there is no encoding required then there is no change in performance
or number of objects allocated, but for each character that needs to be
encoded we save five object allocations and gain a performance boost.
The performance boost seen varies from 20% when there is one character
to over 50% when encoding ten characters.
Make URL escaping more consistent

1. Escape '%' characters in URLs - only unescaped data
   should be passed to URL helpers

2. Add an `escape_segment` helper to `Router::Utils`
   that escapes '/' characters

3. Use `escape_segment` rather than `escape_fragment`
   in optimized URL generation

4. Use `escape_segment` rather than `escape_path`
   in URL generation

For point 4 there are two exceptions. Firstly, when a route uses wildcard
segments (e.g. *foo) then we use `escape_path` as the value may contain '/'
characters. This means that wildcard routes can't be optimized. Secondly,
if a `:controller` segment is used in the path then this uses `escape_path`
as the controller may be namespaced.

Fixes #14629, #14636 and #14070.
Grammar fix in Getting Started Guide
Merge pull request #14816 from jonatack/patch-2

Grammar fix in Getting Started Guide [ci skip]
Fix code indentation and improve formatting

in the Getting Started Guide.

This PR regroups #14817, #14818 and #14819 into one commit.

[skip ci]
[ci skip] builtin -> built-in
Merge pull request #14821 from jonatack/patch-5

Fix code indentation and improve formatting
Merge pull request #14820 from akshay-vishnoi/doc_changes

[ci skip] builtin -> built-in
[ci-skip] correct the classify example's output
Merge pull request #14823 from kuldeepaggarwal/fix-inflector-example

correct the classify example's output.
Changed miss-leading comment [ci skip]

After this 21dbe6f39b57f52967e92716dbd5e2b894e7a64c

2.1.1 :001 > 'business'.classify
 => "Business"

2.1.1 :004 > 'calculus'.classify
 => "Calculu"
2.1.1 :005 >
ActionController::Renderers documentation fix

ActionController::Renderers::RENDERERS is an instance of Set. Docs incorrectly
state that it's a Hash.
Merge pull request #14825 from arunagw/aa-remove-missleading-comment

Removed missleading comment [ci skip]
Merge pull request #14826 from stevegraham/action_controller_renderer_doc_fix

ActionController::Renderers documentation fix
Made calls to 'blank?' and 'present?' easier to reason about

Made calls to 'blank?' and 'present?' easier to reason about by
changing code that did not need to be negative or double negative.
It's just easier to think about code that's written in a positive
way than negative code.

- Replaced 'unless blank?' with 'if present?'
- Replaced 'reject(&:blank?)' with 'select(&:present?)'
- Replaced '!blank?' with 'present?'
- Replaced '!include?' with 'exclude?'