I'm finding him impossible to deal with at the moment. He gets into these totally hyped-up, silly moods, where if I ask him to do something he just laughs and refuses or does the opposite. If he doesn't like something that I've done (which are the most trivial things, like walking down the stairs before him, or doing up the velcro on his shoes in the "wrong" order) - and yes I've tried telling him to do his shoes himself, then, which just leads to a mass screaming tantrum and the shoes don't go on at all and we end up late for whatever it is we're doing. He won't get dressed or put his shoes on for himself, even though I know he can do it.
He's constantly showing his bum at me, or getting his willy out and "playing" it at me (which he calls the "willy guitar"
). I ignore this and refuse to engage with him until he's properly dressed but sometimes I get a bit wound up which I guess is probably what he finds funny. If he doesn't get things his own way he shouts, screams, throws things and tries to make a mess on purpose by pulling things off shelves or whatever. He tells me to shut up, he calls me a stupid bum and other things. He thinks it's fine to bark/scream orders at me for me to do. He does stuff deliberately to wind me up - I'm not imagining this! He stands there dancing and laughing at me!
He was lovely until he turned four! :(
I always ignore him when he's screaming and tell him I'll listen when he asks nicely but it gets wearing because he goes through ages of the screaming before we get anywhere. I'm totally lost with any kind of time out or naughty step/sending to room etc because he doesn't stay there for even one second, so I can't start the timer again from nothing when he gets up, because I don't even get chance to start it. I can't take myself off to another room for some space, because he just follows me. I've tried sitting with him for the time out just to calm him down, but he tries to scratch and hit me or pull my hair or throw things at me. He knows that the toy will get taken off him as soon as he throws it but he doesn't seem to care. I've resorted to putting him in his bedroom and holding the door closed on occasion but I feel awful doing this 
This is all particularly ramped up when he's hungry but he seems to be hungry all the time, I can't keep up with him. I often end up letting him watch loads of TV or play games on my computer (CBeebies type things, not violent shooting games or anything!) so that I can get stuff done. And then sometimes he'll be lovely, but at the moment the hyped up moods seem to be taking over and making me feel exhausted/snappy so that I don't want to do the nice things. I've arranged to meet a friend at the park today so hopefully that will wear him out a bit and provide a nice change of scene, but I really need a plan for the disrespect thing because I'm worried he's going to turn into a total monster when he gets a bit older
Help!