* Fix narrowing conversion warning.
The `static_cast` does not change the behavior of the programm only explictly stating that the behavior is intended.
This change is needed as some compiler settings will treat this warning as an error.
* Do not redeclare `result` variable in insertFormattedString as it shadows variable in outer scope.
This fixes a compiler warning for shadowing variables declared in an outer scope. This change does not change the behaviour of the programm as the shadowd variable is not reused after the inner scope ends. Also the new version should represent the intention of the code better.
This change is needed as some compiler settings will treat this warning as an error.
When building an application on Windows using Drogon as a dependency and with warnings treated as errors, the FindFilesystem.cmake generates this error (in CMakeError.log):
```
src.cxx(6): error C2220: the following warning is treated as an error
src.cxx(6): warning C4477: 'printf' : format string '%s' requires an argument of type 'char *', but variadic argument 1 has type 'const std::filesystem::path::value_type *'
src.cxx(6): note: consider using '%ls' in the format string
src.cxx(6): note: consider using '%lls' in the format string
src.cxx(6): note: consider using '%Ls' in the format string
src.cxx(6): note: consider using '%ws' in the format string
```
Documentation of std::filesystem::path: value_type: character type used by the native encoding of the filesystem: char on POSIX, wchar_t on Windows
Using generic_string() fixes this warning
* fix(MutliPart): Does not respect quotes in Content-Disposition header
Currently, Drogon MultiPart parser expects quotes for name and filename in the Content-Disposition header.
The builtin HTTP library for .NET Core (System.Net.Http.HttpClient) leaves the quotes in this header, which means that by default, .NET Core applications cannot upload files to drogon.
The related RFC https://datatracker.ietf.org/doc/html/rfc6266 allows for both usages.
This contribution aims to fix this and handle both cases (with or without quotes)
* Drogon now support custom extension and MIME types
* Added contentTypeString() to retrieve the string version of content type (in case the content type is not in the ContentType enum)
* setCustomContentTypeAndString() also accepts MIME as input (instead of the full content-type header string),
* Remove webContentTypeToString()
* Added app().registerCustomExtensionMime()
* Added support to load custom extension from JSON config
* Maintain compatibility with cmake generated from older drogon_ctl
* Use user-defined C++ version when possible
* C++ version detection no-longer depends on std::filesystem availability
* Link against c++fs in DrogonConfig.cmake if on those versions of GCC
* Allow DrogonConfig to use user-defined C++ version