cache: use per-block unique for-loop index variables

Icarus can't handle several different blocks that are using the
same for-loop index variable.
cappuccino/ctrl: set npc to pc_ctrl_i on trap stall

A stall caused by a trap instruction (sw breakpoint) should set
npc to the pc where the stall ocurred. Since the exception
signal goes high in ctrl/mem stage, the current pc is pc_ctrl_i.
cappuccino: add support to read gpr via spr

This adds an extra register file read port, for access to the
gpra via spr.
So far only read access.
The motivation for adding a complete seperate rf_ram is that
it's least intrusive and muxing the address port of one of
the 'real' rf_rams can be avoided.
The downside is of course that it's a bit of a resource waste.