BLXV-26 BLXV-73 BLXV-81 BLXV-82 BLXV-83 (8.36) Refactor AD v17.

--------------------------------------------------------------------------------
* Add the ADcommon and GetPluginBaseAvailable interfaces. Together these
  interfaces allow plugins to take either another plugin or a driver as
  an input.
* Implement the ADCommon interface on the ADBase and NDPluginBase interfaces.
* Extend all ND plugin interfaces to use GetPluginBaseAvailable instead of
  just having a local copy of getPluginBase().
* Implement a new abstract base class, NDBaseImpl, which implements both
  ADCommon and GetPluginBaseAvailable.
* Extend all ND Plugin Impl classes from NDBaseImpl and remove functions
  now implemented in the abstract base class.
* Remove getPluginBase() from NDFileHDF5 since it 'contains an' NDFile
  rather than 'is an' NDFile.
* Replace all occurences of getNdFileHDF5().getPluginBase() or equivalent
  with getNdFileHDF5().getFile().getPluginBase().
* Add an UnsynchronisedExternalShutterNXCollectionStrategy interface and
  implement it on SingleExposureUnsynchronisedExternalShutter and a new
  MultipleExposureSoftwareTriggerAutoModeUnsynchronisedExternalShutter.
* Implement an input parameter on V17PluginFactoryBeanBase using an ADcommon
  property.
--------------------------------------------------------------------------------
BLXV (8.36) Tidy import.
BLXV-26 BLXV-73 BLXV-81 BLXV-82 BLXV-83 (8.36) ADControllerImpl improvements.
--------------------------------------------------------------------------------
* Add support for UInt32 in ADControllerImpl.
* Move the pointless getLength checks in ADControllerImpl out of each case
  statement to just after it.
--------------------------------------------------------------------------------
BLXV-26 BLXV-73 BLXV-81 BLXV-82 BLXV-83 (8.36) EpicsController improvements.
--------------------------------------------------------------------------------
* Add a warning when the count of elements returned from a channel is different
  to the count requested.

  IMPORTANT: This immediately highlights a variety of Epics failure
             modes which would otherwise go unnoticed!

* Add length of timeout used to timeout exceptions.
--------------------------------------------------------------------------------
BLXV-26 BLXV-73 BLXV-81 BLXV-82 BLXV-83 (8.36) Zebra CV move ctr improvements.
--------------------------------------------------------------------------------
* Calculate minimumAccelerationTime from getCollectionExtensionTimeS for
  detectors implementing the UnsynchronisedExternalShutterNXCollectionStrategy
  interface.
* Add checks for minimum acceleration distance taking too long.
* Added a note that the setMinimumAccelerationDistance should never be smaller
  than the deadband of the motor.
* Added a getMinimumAccelerationDistance() method.
--------------------------------------------------------------------------------