Revert "Drop unnecessary to_a calls in options tests"

This reverts commit 6f29c36aed9d951499146054a4caca702fa33d1a.
Revert "Replace Options.coerce with an alternate constructor"

This reverts commit 8d2ef974a3a87bf4207f71ccb8a7b4776e16a016.
Revert "Remove unused branches from Options.coerce"

This reverts commit cee42c339e7632eab15111e2c4e6c121ace6f9e2.
Revert "Options is no longer used directly by BuildOptions"

This reverts commit 1c05bc0238aa1abf7d5542b8afa11ead2bee66a8.
Revert "Set methods on Options already return Options instances"

This reverts commit 4d1464c246861f7aedc355cb5f6360370d05114e.
Revert "Always pass an Options instance to the BuildOptions constructor"

This reverts commit e143bcef259ca76b2124e6e73bd9bdf872418723.

Closes #31557.
Closes #31559.
Closes #31561.
Closes #31562.