3 year old boys can be very difficult to deal with. I have 2 sons (3 and 5) and my 5 year sometimes goes through a negative phase where he says no a lot and is very challenging. What ALWAYS brings him out of this is LOTS OF PRAISE. If you start noticing and praising him for all the good things he does, he will start thinking of himself as a good kid and will start acting like one. So what I suggest you do is to try REALLY hard to look for anything good he is doing, even very small things (e.g., playing quietly, asking without whining, cleaning up), and praise him for it. Then, try to ignore the negative things he does (e.g., saying No), unless they are so bad that you cannot ignore them (e.g., hitting someone). I'm telling you, within a couple days you will have a new kid.
Also, if he says "No" alot, you may want to change the way you are asking him questions. Perhaps instead of asking him Yes or No questions, you should start giving him 2 choices. Instead of saying "Get in the bath now", you could say "Do you want to take a bath now, or go straight to bed?". And instead of saying "Time to get in the car" you say "Do you want to unlock the car door or do you want me to do it?". So basically give him 2 choices, both of which you are fine with, and if you can make one of the options creative and fun (e.g., he gets to open the car door) this works better. One final thing... I think that more punishment and making things more confrontational with him now will only reinforce his negative view of himself (that he is a bad boy) and will not make him improve. My suggestions above only take 1 or 2 days to do before you see a big improvement, so please try them out and see how they work. I learned them from a couple really good books ("How to Behave So Your Children Will Too" and "Love and Logic"). I recommend you read these books if you find that my suggestion works and want more really good advice. Good luck!