Add a "primary temp" to go with "pg temp"

This PR adds OSDMap and monitor support for
1) Specifying a PG primary separately from the order of the OSD list,
2) Overriding the primary with a primary_temp the same way pg_temp works.

In support, it updates the OSDMap encoding (with appropriate feature bit versioning) to our modern encoding standards and does some of the preliminary work to eliminate obvious primary-as-0 dependencies in the OSD.

It does not yet include any feature bit or versioning protections on the use of primary_temp.