As a safety feature, MBR is now a singleton; duplicate MBR objects are problematic, and there should only ever be one. This also solves the problem of passing reference to the one MBR to all the relevant classes that require a reference to it.
Corrected singleton implementation; reference to itself and getInstance() method now static.
Updated MBR test to reflect that it's now a singleton.
mockMBR reference now an official reference to the CPU's MBR.  accessMockMBR() method that was used for testing is now obsolete and has been deleted; as MBR is now a singleton, this method isn't necessary as the MBR instance can be accessed via MBR.getInstance();
Adjusted testTransferToCPU2() test method; now that MBR is globally accessible, this test has been greatly simplified.
Simplified those methods that relied on convuluted access to MBR to check delivery of data, now that MBR is a singleton with global access point.
MAR, like MBR and for the same reasons, is now a singleton with a global access method getInstance().
Updated MARtest to reflect that it is now a singleton.
Added some potential adjustments to bus implementation to comments of ControlLine.
Drafting out some rough code for ControlUnit operation (which ought to shed light on any holes elsewhere, i.e. system bus operation). Likely to be revised and refactored.
Added InstructionCycleStage to represent stages of the instruction cycle. Updated IR.
Added notes to ControlUnitImpl with ideas about how to implement the instruction cycle (particularly load/store instructions.