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

At the moment, we print out blockpcs in such order, e.g.,

blockpc %1 0 %2 0:i1
blockpc %1 1 %2 1:i1

Adding this constraint enforce us to not abuse the freedom when we manually write souper.opt files. For example, I wouldn't prefer the instruction sequence below:
...
blockpc %1 1 %2 0:i1
...
blockpc %4 1 %3 0:1
...
blockpc %1 0 %2 1:i1
...
blockpc %4 0 %2 0:i1

It's hard to follow. 

Another consideration is that at the very beginning enforcing some rules is easy because our output obeys the rules. If we think the rules are too restrict, we could relax them later. 

What do you think? 

Thanks for the review, Peter.