Implement bool expressions

Implements #160.
Something to keep in mind: At this point, all predecessors are known, so the block could theoretically be matured. This does not seem to matter for the tests (the remaining blocks are probably matured during `constr.finish()`), but it would be worth looking at if this has any performance impact e.g. on the Phi construction.