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
UNIX timestamp and no, we are not going to remove this. Forcing user's to create a DateTime object to display a formatted date