i#1551 port to ARM: fix bugs in ATOMIC_ADD_EXCHANGE_suffix()

Fix two bugs in ATOMIC_ADD_EXCHANGE_suffix() for ARM: need *var (else it
modified the wrong memory), and need to return the original (non-added-to)
value to match x86's OP_xadd and what the caller expects.

Adds a sanity check to the reset_at_fragment_count check to ensure it's
never triggered at 0 (the exchange bug's symptoms included hitting reset
code when it shouldn't).

Review-URL: https://codereview.appspot.com/187620043