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.