[keyboardlayouts] change from named layout to a locale+variant system

This change keyboard layouts from using names by conversions to using locale and variant name.

Allows to:
1. In the future, tie keyboard layout to other locale setting.
2. Display a shorter name in the keyboard dialog. Currently kept unchanged, but it's very easy to change to a lang code (or flag like the original PR) now that display name is decoupled.
Should we support layouts that don't have a locale set? I can see the variant being empty but IMO the locale should be required.