Add a DateTimeFormatter class which allows overwriting the language and ...

Fix #12227

ToDo:
- [x] Write tests
- [x] Bring back "Last year/month"
- [x] OCP
- [x] Add to service container with current user's locale and timezone as default
- [x] Deprecate `Util::formatDate()` and `relative_modified_date()`

@DeepDiver1975 if you have a moment to look at the first implementation scratch