ARM: Back up VFP scratch registers before using them on hard float.

This is because d0-d7 are argument registers and d8-d15 are
preserved registers - we can't use any of them as scratch
registers without restoring their previous values.
ARM: Handle large offsets in emit_float_args ().
ARM: Emit shorter floating point load/store sequences when possible.