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...

I think you will need to add explicit blockpc support to `GetRelevantPCs` anyway. `GetRelevantPCs` ought to be able to tell which blockpcs are needed by examining the replacement, pcs and blockpcs together. (Consider the case where a var is shared between a pc and a blockpc, but does not appear in the replacement.)

I also think we ought to add blocks to the equivalence class analysis; i.e. blocks should be members of equivalence classes (InstClasses would become `llvm::EquivalenceClasses<void *>`) now that both `Inst *`s and `Block *`s can be members of it), only blockpcs whose block is in the same equivalence class as the replacement's will be part of a given candidate.