Pin atoms before both updateParticlesPosition() calls.

Also change pinAtoms to just clear velocity.

Originally, we could just call pinAtoms once, after we had updated
the particle accelerations. We would call then halfUpdateVelocity and
updateParticlesPosition twice, but this would have no effect as
acceleration would be zero for the pinned atoms.

This change: 2653d3355, introduced a side-effect, which is that when
readModelState is called (i.e. after every step) we call
updateParticlesAccelerations. This means that the particle accelerations
will already have been set when first entering the integration step, so
when we first call halfUpdateVelocity and updateParticlesPosition, even
the pinned atoms will move.

This change fixes the pinned atoms so that they won't move, even if their
acceleration is set before entering the integration step. It also removes
the zeroing of acceleration, as (1) it's no longer necessary, and (2) it
allows pinned atoms to show force arrows, as requested in [#53552857].

However, there still remains the pre-existing issue that every time we call 
readModelState we also call updateParticlesAccelerations, which means that,
once per step, accelerations are essentially updated twice in one integration
loop (in two different model states, as the particles have moved slightly),
so the model will be in a very slightly different state than it would have
been if readModelState had not been called.

Since this generally only occurs once every 100 integrations, and the result
of this second updateParticlesAccelerations is perhaps trivially different
from its original value (each particle has moved half an integration-step),
it could be that this side-effect is unimportant. Checking in with @pjanik and
@rklancer to see what they think.

[#53552969] [#83957704]