Add logger debug msg to assist problems during startup
New classes to provide generic EnumPositioners
Add enabled flag to TabCompositeFactory
prevent duplicate entries in Scannable and Detector lists in certain situations
BLXVIIIB-197 fix bug where the CommandQueue pauseWhenQueueEmpty attribute was not giving expected behaviour

When an item in the queue finished processing for any reason, then the queue is
placed into a 'waiting for start' state i.e. to run if there are any more jobs or when
another job is added. 

Unless: the pauseWhenQueueEmpty attribute is set to true and there are no more jobs. In that case the queue is paused, even when more jobs are added, until the start button is clicked.

This was the expected behaviour. There was a bug where the queue was being paused whenever a job is aborted by the 'skip' button which is wrong as then it is not really skipping. The skip button was behaving the same as the red stop button.
BLXVIIIB-197 fix bug where the skip button in the command queue was doing the same thing as the 'abort and pause' button
add write-only defaultPosition property for DummyMotor
Processor.getState() doesn't throw an Exception
Merge branch 'gda-8.40'