Optimize FoldShiftLdrStr in ARM Peephole optimizer

The optimizer now juggles around the base and index register if that opens
up the possibility of folding the shift into the instruction.

This can only be done in the case of addressmode=AM_OFFSET, in case of
[AM_POSTINDEXED, AM_PREINDEXED] we can not move the base register, as this
would cause havoc and destruction.

git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@24645 3ad0048d-3df7-0310-abae-a5850022a9f2