Automatic format changelog generation based on hints and `if:` conditions
1. Formats' fields are annotated using `format_version` and `format_flavour` hints proposed in #225
2. Relative "priorities" of `format_version` components (individual integer fields) are determined, either using the arguments of `format_version` hint (a single integer starting from `0`) or their names (`major` is for `0`, `minor` is for `1`, `patch` is for `2`, `tweak` is for `3`)
3. All the values causing `if` predicates using these fields be flipped are determined using an SMT solver or maybe a specialized application-specific solver.
4. A sequence of version numbers is generated.
5. A matrix is built using all the combinations.
6. The matrix and the KSY is fed into a visualizer app. For each axis of a matrix a drop-down list is generated.
7. A user chooses the version and every part of yaml for which the predicates don't hold is grayed out.
8. Also a user can select 2 versions and get a "diff" - the parts of format for whjch the predicates have flipped.
9. A user can fix a flavour and get a sequence of diffs for each 2 adjacent flipping versions.
