As well as the above advice I'd say that you have to lower your expectations for a good while. If he kicks off in cafes, then only go to places where you know you'll be served v quickly, or don't go for a while. Keep visits to soft play etc short, and leave if it's going pear-shaped.
Over-excitement used to trigger pushing etc in DS2
Tiredness, and hunger were a major trigger for my DS1, so always carry a banana (or similar). Honestly, he would absoultely "turn" when hungry
Re: the dogs - there's little point getting angry with him. I think they need to be kept apart.
It IS important to be firm, but don't shriek or harp on about bad behaviour - they just hear "bla bla bla". At worst, a strong reaction can give them a "reward" in the form of attention. A better strategy is to remove them from the situation, with very little talk. Sit them on the floor, on a chair, or on your lap, and don't give attention for a short while. Once it is over, forgive and forget. Have a cuddle!
Try and remember this is very normal. TRY not to worry or label as this will make it worse. My DS2 was similar (pushing, biting etc), but grew out of it and is now a very well-behaved, sociable 7 year old.
Finally, girls can be like this too. And DS1 was not at all aggressive.