DNM: osd: make promote_object independent of the op that triggers it

This will help support read proxying, and generally cleans things
up a bit.