who was the general that won the battle of zama at the end of the second punic war?