Fix URI decoding

The servlet spec states that ServletRequest#getCharacterEncoding
provides the character encoding of the body of the request and if none
is specified, latin should be used (i.e. ISO-8859-1).

UrlPathHelper builds on top of this mechanism to decode URIs but it
shouldn't assume that the character encoding of the body should be
used if specified as this is a different matter. Typically, servlet
container decodes the URI with UTF-8 and never use the character
encoding of the body.

This commit clarifies the situation in a way that better matches the
spec. The default encoding is always used by default and users get a
chance to override this through the determineCharEncoding method,
including reverting back to the previous behavior if needed.

The default URI encoding switches from latin to UTF-8 which is a
better sensible default. Tomcat still uses latin by default but it can
be easily overridden in the connector configuration.

Issue: SPR-11474