This lets the selector erase instructions, which is incompatible with reverse iterators. The code is pretty awkward, but I'm not sure there's anything cleaner to be done (short of having select() return iterators, which I'd rather avoid if unnecessary).
This also lets us dump all "selected" instructions (really, just the instructions between prev(MI) and next(MI)); I'll commit separately but these seem worth reviewing together.
WDYT?