I've done this before using multiple Streams. I'm not a big fan of doing this in general because sending the same email over and over isn't really nice.
Here's what you do:
Stream 2: variations on email 1
Stream 3: variations on email 2
Stream 4: variations on email 3
The catch is you will have to create child campaigns to manage the transitions:
If Email 1 is Sent, then Wait 3 days. If Lead is member of the Opened/Clicked list, then do nothing, if NOT, then Move to Stream 2.
The next catch is...if the lead finally responds to Email 01a, do you want to send them back to Stream 1 for Email 2? You'll need a campaign that says, if Lead clicks/opens Email 01a,b,etc...then move back to Stream 1. The lead will get Email 2 at the next Cast and the process repeats.