With this, FMF(contract) becomes an alternative way to express the request to
contract.
This is handled similarly to ApplyDebugLocation using an RAII to propagate
FPOptions from the BinaryOperator to the IRBuilder. Note that
CompoundAssignOperator (+=) can be an lvalue so it needs to be handled as such
as well.
This is toward fixing PR25721.