Blockpc

This patch addresses issue #81 by implementing blockpc based on Peter's
suggestion. blockpc has the same semantics as pc, except that pc only applies
when the given predecessor of the given block is chosen.

blockpc(s) are collected in a way similar to what we currently do for pc(s),
and are encoded with a similar technique for encoding UB constraints.

The parser is also updated to parse blockpc(s).

I am sorry the path is a bit big...

This is a little confusing. A blockpc has four properties: the block, the predecessor number, the source and the replacement. Your notation at least appears to be missing the predecessor number.

I also don't understand why you can extract B1->B2 and B8->B3 here. Presumably these are for B7's first predecessor, B5. But if we know that B5 was the predecessor, we still don't know which of B2 or B3 was chosen.