Issue/12227 formatDate() improvements

* Add support for giving L10N
* Add support for $options from `$l->l()` to `formatDate()`
* Add support for relative dates (can be done with above step, as Punic\Calendar just requires adding a ^ to the format string)

Fixes #12227 

@DeepDiver1975 @PVince81 @MorrisJobke 
An asterisk is `*` - `^` is a circumflex ;)