Utils.FilenameExtSourceExtension to the Stdlib.Filename module
split_suffix fname removes any suffix from fname and returns both the resulting name and the removed suffix
if split_suffix fname gives (base,suff), add_before_suffix fname s returns base^s^suff
if split_suffix fname gives (base,suff), replace_suffix fname s returns base^"."^s