Maybe it's time to stop "negotiating" with him. Instead of trying to "negotiate" having eggs for breakfast instead of ice cream, how about just "No. We don't eat ice cream for breakfast. This morning we will be having eggs for breakfast." And when you were in the car and he wanted to go visit a relative, again the answer should be "No. We are not going to visit _______ today. We are just taking a ride in the car today." YOU are the one who should be making decisions here, and setting limits and boundaries. He hits you because HE CAN, and he is getting a reaction from you when he does. I think when the tantrums elicit reactions from parents, the tantrums continue and get worse.
He needs to know that VIOLENCE will not get him what he wants, either. When he kicks, punches, slaps---put him in his room with a gate and let him be by himself to calm down. Make it CRYSTAL CLEAR that you will not tolerate being hit and kicked, and when he does that he will be spending some time alone because you don't want to be around him when he is like that. When he was going crazy when he couldn't have ice cream for breakfast, as soon as he starts in with the physical stuff he should be brought to his room with the gate put up, and he can tantrum by himself. When he begins to realize that his behavior will not get him what he wants and will not eilicit any response/reaction from you, chances are it will stop. You don't hit your children, so why would you tolerate being hit by them? You need to make it clear that you will not tolerate being hit from him, FOR ANY REASON.
If he won't let you dress him in the morning, then leave him in his pajamas. I wouldn't get into a screaming fight about it. If you have someplace to go, then you can try to get him dressed-----but, if it is going to cause you to be late or give you a headache, then just leave him. And if anybody says anything, tell them the truth. He didn't want to get dressed, and you didn't have the time or the inclination to fight him about it. And, if it is someplace that he goes---like a playdate or school or something---then explain to him that you're not leaving until he gets dressed. Period, end of story.
Lots of people will disagree with me on this.........but, when kids don't get the reaction that they want from a certain behavior, that behavior stops. When they learn that throwing a fit only lands them in a room by themselves, it will stop. And, instead of "negotiating", you as his mother must be firm and make the decisions---there is no "negotiating"!! No matter how much he cries and screams, you're not going to visit the relative. (At that point, to be quite honest, I would have gone home and put him in his room and put the gate up and let him freak out by himself.) You can explain to him that if he acts violently, you are not going to respond to him and he will need to calm down and stop hitting if he wants to talk to you. I think you need to let him know that poor behavior does not get rewarded. Ignore it when it happens.
Instead of trying to get him to go to sleep for his nap, perhaps you can just put him down and have him rest quietly for a while. Take away all stimulation and tell him that he has to stay in his room/bed for X amount of time----and he doesn't have to sleep, but he has to stay quiet in there. Your "inisistance" and "pleading" is letting him know that he's got the upper hand, and he knows it!! Sometimes with children, no amount of pleading and insisting will get the job done----it has to be "It is time for your nap. If you don't want to go to sleep, then you don't have to. But you MUST stay in your bed/room for X amount of time and stay in there quietly." Any cries/screams, hitting/kicking must be met with an actual physical blockade between you and him, and no further wrestling between you and him. Show no reaction----most of the time, his behavior is the catalyst for you to become upset and you are going crazy trying to get him to stop. Instead of having him create a "chemical reaction" in you, take him by the hand or pick him up and put him in his room BY HIMSELF---no pleading or explaining or anything, except that he is being put in his room beause of his behavior. He will learn in a very short amount of time that when he acts like that it is going to be met with being put in "solitude" and he can think about why he is there by himself----and you can explain to him that if he is going to hit, then he can't be around anyone else, because he is hurting them, and you aren't going to tolerate being hurt by him.
He may be frustrated, but hitting, kicking, crying and screaming is not going to get him what he wants, and he needs to know this. You have another child that needs your care and attention too, so you need to maintain your sanity for that!! Instead of getting to the point where you say "get away from me", get him away and alone first so you don't get to that point. Screaming won't hurt him!! But it certainly hurts your ears and your baby's ears!! When he yells, don't answer and just ignore him---tell him that you will not answer to his yells and screams, and when he can speak in a normal tone of voice you will respond.
As far as the diaper goes, maybe it's time to try and start potty training him? Or, if he kicks and hits when you are trying to change the diaper, leave it for a little while and come back to it later.
There is no sense in getting beat up and being at your wit's end.........let him work out his own tantrums without beating you up. You have enough to do, without getting a black eye from being kicked by your 3-year old.
Just my opinion.