fetch: do not refill when stalling
mmu: rename fault to invalid + add write fault
initial exception + spr support

This commit is a bit larger than I'd like it to be,
and contains a bit more cruft than I'd like it to,
but since it's a foundation for the exceptions and
the sprs I let the rest fall in in smaller nicer portions.

Mile high view of the changes:
exceptions are handled in memory stage, regardless of where they
are "born".
Anything prior to memory stage is flushed with the exception.
Any write-back currently present in the memory stage will be
replaced with a write to reg 30 (exception return reg) with the
PC currently in memory stage.

The RFX instruction is handled as a normal "jump to reg" instruction,
with the added side-effect that it alters the PSW.
The read from reg 30 is muxed in in decode stage, so the result
is ready when the jump is resolved.

SPR read/write happens in execute stage and is muxed with the
result from the ALU.