SPR-10608 Introduce Path based Resource

FileSystemResource uses the "old" java.io.File instead of the "new"
java.nio.file.Path. One of the disadvantages is that it only works with
the default file system and not with custom ones. Since the minimum
requirement is still Java 6 FileSystemResource can't be retrofitted
(and no #getPath can be added to resource).

* add PathResource
* add PathResourceTests
* update Resource with a reference to PathResource

PathResource delegates to the underlying file system instead of
StringUtils like FileSystemResource. It has therefore slightly
different semantics. First when building relative resources via
createRelative the relative path will apply to this path (like URL or
Unix). If the same switchable behavior like FileSystemResource is
wanted that could be done with a boolean switch. Second equality is
delegated to the underlying file system provider so it's
case-insensitive on Windows.

PathResourceTests contains only minimal tests (FileSystemResource has
no tests) as writing tests for file code is tricky. I could write more
elaborate tests using https://github.com/marschall/memoryfilesystem
if that's wanted and OK.

Issue: SPR-10608