[Locale] fixed the failing test described in #9455
re-factor Propel1 ModelChoiceList

* add BaseModelChoiceListTest ensuring compatibility
* fix keys and order are preserved
* fix lazy-load to use filters of initial query
minor #9479 [Locale] fixed the failing test described in #9455 (andremaha)

This PR was merged into the 2.2 branch.

Discussion
----------

[Locale] fixed the failing test described in #9455

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #9455
| License       | MIT
| Doc PR        | -

Commits
-------

3f91039 [Locale] fixed the failing test described in #9455
bug #9469 [2.2][Propel1] re-factor Propel1 ModelChoiceList (havvg)

This PR was merged into the 2.2 branch.

Discussion
----------

[2.2][Propel1] re-factor Propel1 ModelChoiceList

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | fixes propelorm/Propel#789
| License       | MIT

replaces #9458

Commits
-------

613b5f6 re-factor Propel1 ModelChoiceList
Check if the pipe array is empty before calling stream_select()
bug #9367 [Process] Check if the pipe array is empty before calling stream_select() (jfposton)

This PR was submitted for the master branch but it was merged into the 2.2 branch instead (closes #9367).

Discussion
----------

[Process] Check if the pipe array is empty before calling stream_select()

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #9280
| License       | MIT
| Doc PR        |

ProcessPipes generates a warning frequently which can cause issues for custom shutdown functions. Adding a check to see if the pipe array is empty should be functionally equivalent without having to generate the error.

Fixes: #9280

Commits
-------

12f95e2 [Process] Check if the pipe array is empty before calling stream_select()