GDA-5863 Remove static references to SScanBase.checkForInterrupts()

... and Tidy up ConcurrentScanChild
GDA-5863 Introduce new ScanStatus enum

This includes possible follow ups to allow assertions that unexpected transitions are not requested.
GDA-5863 Stop ScanBase.prepareForCollection() from waiting for the scan to complete (old code that used to do nothing)
GDA-5863 Make ScanBase.run() final so we can trust that the logic is run by extenders.
GDA-5863 remove references to ScanBase.interrupted in Scan subclasses
GDA-5863 add InterruptedException to endScan

cos we know we are going to do it anyway
GDA-5863 Replace calls to static ScanBase.checkForInterrupts() with checks for Thread.Interrupted(), ScanBase().waitWhilePaused() and potentially InterfaceProvider.getCurrentScanController().isFinishEarlyRequested()

Added requestFinishEarly() also to this interface.  This replaced haltCurrentScan.



To do:
- GUI changes
- IScriptController.haltCurrentScript is the mechanism for stopping all threads, so should be renamed
- broadcast of scan updates
GDA-5758 change how panicStop stops the CommandQueue

add a STOP to the top of the queue and then call stop on the current command

remove the timeout value as it is not used in the underlying implementation. The interface should be changed to reflect this
GDA-5863 Replace *more* calls to static ScanBase.checkForInterrupts() with checks for Thread.Interrupted(), ScanBase().waitWhilePaused() and potentially InterfaceProvider.getCurrentScanController().isFinishEarlyRequested()
GDA-5863 Pull setParent and the likes from Scan interface
GDA-5863 Remove global ScriptBase & ScanBase interrupt flags and introduce a Scan specific status.
Merge branch 'master' into master.GDA-5863.

This was necessary to be able to merge all other repos

Conflicts:
	uk.ac.gda.api/META-INF/MANIFEST.MF
	uk.ac.gda.core/src/gda/scan/ExplicitScanObject.java
	uk.ac.gda.core/src/gda/scan/MultiScanRunner.java
	uk.ac.gda.core/src/gda/scan/ScanBase.java
GDA-5863 do not hold Scan state in JythonServer.

Instead hold a reference to the current scan and use this as the source of state.

Only the current scan can inform the JythonServer that it should broadcast out a change of state.
Merge remote-tracking branch 'origin/master' into master.GDA-5863

Conflicts:
	uk.ac.gda.api/src/gda/jython/JythonServerFacade.java
	uk.ac.gda.client/src/uk/ac/gda/actions/HaltScanHandler.java
	uk.ac.gda.core/src/gda/jython/JythonServer.java
	uk.ac.gda.core/src/gda/scan/ConcurrentScan.java
	uk.ac.gda.core/test/gda/jython/JythonServerTest.java
	uk.ac.gda.core/test/gda/scan/ScanTest.java
GDA-5863 remove ScanBase.setPaused method
GDA-5863 enable/disable JythonTerminalView buttons using new Scan Status event
GDA-5863 mark haltCurrentScript as deprecated

we will remove this as the best way to stop scripts in a general case is the panic stop
GDA-5863 merge pause buttons on Jython Console UI into a single one
remove compiler warning
GDA-5038 clarify in Javadoc the difference between atScanEnd and atCommandFailure


 - if the scan is aborted using an InterruptedException then stop() is called on all Scannables (and Detectors) and the pipeline is shutdown
 - if an exception of any other type occurs in the scan then atCommandFailure() and then stop() is called on all Scannables and the pipeline is shutdown
 - if the scan is requested to finish early (new feature in GDA-5863), or completes normally, then atScanEnd() is called on all Scannables and the pipeline completes