Remove all weird characters while trying to ensure
the sanitize filename is close to the original one:
accent are stripped, spaces are replaced by -,
upper case chars are converted to lower case.
Returns a complete relative URL, for example /api/files/3418557718705733633/cats.jpg
Optional.empty() is returned if the corresponding file does not exist