Experimenting with more structured ways to handle command-line input/output in Rust

Add language negotiation using `fluent-langneg`

Notably changes the signature of LocaleCategory::get_locales from Option<String> to Vec<String>, as there could be multiple options and the first choice (what was returned before) might not be supported.

Created by  finchie  on March 18, 2024
HCGVXOF7P3KKS2IMGVJWI2POVOZQFPXH26YVBJZRSOYSUM4CHUBQC
Change contents