Framework for embedding localizations into Rust types

Move interaction constructors from individual types to implementations on `InteractionEnvironment`

For example, Input::new() is now InteractionEnvironment::new_input(). This allows all interactions to re-use the new locale field stored in the environment, and brings the API in line with how ProgressBar already stored the environment internally.

Created by  finchie  on August 7, 2025
7YOM2QEFZ5HWVEISP3VIR2GKF2NNH4KKTLTWEMYMMWNYKICXWTZAC
Change contents