Fixed up an issue where SGMAcquaman would not start up correctly if the beamline was at the visible light setting. This solution addresses the crash, but it could do more to help with the settings that SGM XAS Scan configuration page gets.
Added a check and a message box for sample plate moves that are attempting to operate on a sample plate that doesn't match the currently loaded plate.
Added the four auxiliary diodes to the XAS Detectors in the SGM Beamline object.
Merge branch 'master' of github.com:acquaman/acquaman
Changes AMProcessVariable to use ca_put() by default; you can change it using enablePutCallback() if required. Closes 275.
Updates AMBasicControlEditor to handle enum controls, provide status icons and tool-tips.
Adds alarmChanged(), alarmStatus(), and alarmSeverity() to AMControl, AMPVControl implementations, and CLSBiStateControl.
Updates AMBasicControlEditor for displaying alarm severity; adds optional readOnly() mode that cannot move the control.
Renames AMControlEditor -> AMExtendedControlEditor. Renames AMBasicControlEditor back to AMControlEditor.
Moves AMExtendedControlEditor and AMControlButton to their own .h/.cpp files.
AMControl: Changes unspecified units from "n/a" to "", since unspecified units don't mean that units aren't applicable -- the appropriate unit might be nothing.  In most cases, the printed output 'Moving SomeControl to 3' is more readable and less confusable than 'Moving SomeControl to 3 n/a'.
Removes AMBasicEnumControlEditor, since it's now redundant; use either AMControlEditor or AMExtendedControl Editor.

REIXS: removes REIXSActionBasedEnumControlEditor and updates REIXSSidebar.
Resolves a problem where AMControl could not described situations where the move PV had a different number of enums than the read PV.  Enables AMControl to expose separate sets of enum values for feedback (value()) and setpoint  (move()).  enumNames() now returns the same feedback enum values it always did, but moveEnumNames() now exists to return a different set of enums, if directed by the implementation using setMoveEnumStates().

Updates AMPVControl and AMPVwStatusControl to setMoveEnumStates() based on their writePV_.

Updates AMControlEditor to show the moveEnumNames() in the drop-down menu.

TODO: AMExtendedControlEditor.cpp should probably be updated too, to use moveEnumNames() instead of enumNames() on line 424... But this would possibly be a behaviour change for the SGM beamline: users might see a different set of enum choices than they were used to.  Leaving this alone for @davidChevrier to check out.
Updates AMControlInfo to contain an enumString() field, and return isEnum() == true if the info has been derived from a control with enum values.
Updates AMControlInfoListTableView to show the AMControlInfo::enumString() instead of the raw value, if isEnum() is true.  This means that inside the AMGenericScanEditor view, users can see meaningful text like "Grating: MEG" instead of "Grating: 2"
Moves AMControlInfo into its own .h/.cpp.
Adds Q_INVOKABLE constructor to AMRun and AMExperiment to make them a proper AMDbObject example.
Adds the full name of the run to the AMRunModelItem tooltip, since this is often obscured by the edge of the sidebar.
Changes AMSamplePlateSelector to order the drop-down menu with most recent plates first, to be consistent with the most-recent-first order in AMSampleView, and to let users quickly find their most recent.
Merge branch 'master' into dataStoreUpgrade