Add a dedicated form field for plain select fields
The existing `SingleSelectionFormField` has multiple design flaws that are difficult to solve in a backward compatible way. The main issue with the existing implementation is that it tries to solve too many problems at once, creating an API that is inconsistent and difficult to use / easy to misuse.
This is the first implementation with more to follow that will eventually allow us to phase out the `SingleSelectionFormField`.
Closes #5265
Closes #4789