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. Servlet containers
usually decode the URI with UTF-8 or ISO-8859-1 and never use the
character encoding of the body.

This commit clarifies the situation in a way that better matches the
spec. A new property called uriEncoding allows to force the encoding
to use. The defaultEncoding property is now deprecated and only used
if no uriEncoding is set. For backward compatible reasons, uriEncoding
is not set by default.

Issue: SPR-11474