patch: refactoring AddStmtChoice

Hi Ted,

I have a patch that refactors class AddStmtChoice to make it easier to
use. Please see

The idea is that this class actually represents *two* orthogonal
concerns. By adding methods to manipulate one concern without
affecting the other, we allow the call sites to only specify the bit
of information they care about -- this makes the code more declarative
and simpler.

I also added your explanation on how this class works as comments. Thanks,

Looks fantastic. Please apply.

Thanks for the review! Committed.