My DS7 is pretty much what you described, and always has been. What I have learned not to do is create a reward chart, or lecture, or get mad, or threaten, etc. All have backfired, or just haven't worked. Here is what works for us:
1. A game! Who can brush their teeth best in a side by side competition? Who gets dressed faster household title of fastest dresser? Stop watches on an iPhone are helpful.
2. An immediate reward/bribe. "Hey, since we're up early, if you eat, get dressed, etc. quickly, you'll have some time for iPAD."
3. Not interrupting his flow. If I can, I move my son through his routine while he talks weather, space, sea creatures, Percy Jackson. etc. Or if he's laying on the floor, staring at the ceiling, I move him out of PJs and into day clothes, hoist him up, guide him through his bathroom routine and so forth. I find when I interrupt his flow with my demands, he gets upset and defiant.
I am a "cut and dry" person and always thought discipline should be transparent--until I had my kid. Now, I find that being flexible, low key, and selective about my battles garners the most returns.
I agree 100% with this! My 6 year old is exactly like you described. We also found that games help and keeping it silly helps most with him. My DS is a Superhero in training - he is obsessed with superheroes - so I tell him every day that when it is his turn to become a real superhero, he needs to get changed into his gear in the blink of an eye and so he better start practicing now! And it works for us every time. And we also have a competition on who reaches the car first - so no whining about putting on jackets, shoes etc because we are racing each other.
I give him stickers which are his currecncy and when he reaches a certain number, he can go to the Lego store and pick out what he wants. I give him a sticker every morning that he gets ready by himself quickly. I have a morning chore list like - brush teeth, eat, get changed, eat vitamins etc.