decode: add conditional branch op outputs
cappuccino: add branch prediction

To avoid a critical path from the set flag logic in execute stage to the
branch resolving logic in decode stage, a stall on the condition
l.sfxx; l.b(n)f was introduced for cappuccino.
This however yields a serious performance hit, since nearly all l.b(n)f
instructions are emitted right after the l.sfxx instruction by the
compilers.
To avoid this performance hit, branch prediction is introduced by:
Predicting the flag value in decode stage and do the conditional branch
according to the predicted flag, then compare the predicted flag in
execute stage with the actual flag coming from control/mem stage (the
l.sfxx instruction has moved there by now).
If they do not match, fetch stage is stalled, the on-going fetch is
discarded and the corrected target of the conditional branch is fetched
instead.

The actual branch prediction logic is contained in a seperate module,
currently it employs a simple static backwards branches taken, forward
branches not taken strategy, but the idea behind having it in a seperate
module is that this will make it more easy to implement more advanced
branch prediction strategies and make it reusable for other pipeline
implementations than cappuccino.