VS: Decouple solution generation from `.sln` file format

Rewrite `.sln` generation using a structured intermediate representation.

Issue: #25887
16 files changed