Fix store buffer RAM pointer sizes

The pointers' highest bit is not part of the address (but used for
full signaling). The port of the RAM is one bit less.
Set SPR data read to 0 if DU not present
cappuccino/rf: zero pad rf read addresses

To match the address space when shadowed GPR files are enabled.
cappuccino/rf: fix RF_ADDR_WIDTH

The address width should increase by one bit for each
gpr file, not get multiplied.
Don't acknowledge SPR access when DU is missing
steal utils from orpsoc-cores

This makes a copy of the orpsoc-cores verilog_utils
core.
For now, the reason is to gain access to the clog2
logic from that, but the other functions are copied in
here as well.
cappuccino/rf: *really* fix RF_ADDR_WIDTH

As Stefan W pointed out to me, my previous fix
was completely incorrect and only correctly for
OPTION_RF_NUM_SHADOW_GPR = 1.
This is based on a patch he presented, but makes
use of the `clog2 macro to maintain compatibility with
icarus.

Also, remove the unused RF_WORDS localparam.
Merge branch 'master' into withfpu