Don't disassemble IR if no logging

As logging is now tied with the debugger,
don't disassemble the current instruction
only to be discarded. Also avoids
warnings about unused "buf".
Reduce dependency on CPU registers

Teach disassembler how not to access
registers at all (now the current block
number needs to be passed explicitly).

While here, split registers.h into
three include files:

For code that really needs to access regs[]
array directly.

Code that needs to check R0 flags
(internal to the CPU module).

Code that wants to decode instructions.
Disassembler needs only this, without
access to the "regs" variable.

For files that need to know special SR
flags, mostly current block number.
This requires also regs[S_SR] access.

Code outside of the core CPU emulation
that explicitly accesses current block
only has been marked with /* CURRENT_BLOCK_ADDR */
comment because grepping for Q, NB is difficult.

Rationale:

* Some commands (debugger memory read/write, dasm)
  can be taught to access any block in the memory,
  not only the current one (if necessary).

* It is now possible to provide mock mem_get
  implementation that provides fake memory
  values only for testing purposes. This makes
  unit testing of dasm possible.