Created generic Arduino device and necessary VIs

Created a generic Arduino device for integrating Arduino-based hardware
into setlist.

For more information on how this will work, see the wiki:
https://jqi-wiki.physics.umd.edu/d/documentation/software/arduino
Implementing Init Device and Display Info

Still need more work, mostly a stash commit since heading out on
vacation.
structural changes to arduino class to better implement multiple controlled devices
Created generic Arduino device and necessary VIs

Created a generic Arduino device for integrating Arduino-based hardware
into setlist.

For more information on how this will work, see the wiki:
https://jqi-wiki.physics.umd.edu/d/documentation/software/arduino
Implementing Init Device and Display Info

Still need more work, mostly a stash commit since heading out on
vacation.
structural changes to arduino class to better implement multiple controlled devices
Merge remote-tracking branch 'origin/SetList-Arduino' into SetList-Arduino
Merge branch 'master' into SetList-Arduino
Added Arduino device UI elements.

Init Device and Display info are now fully implemented.
Added Arduino device to the Implemented Devices ring.
Merge branch 'master' into SetList-Arduino
Added HWI VIs for override; massaged private data

* Added structure to Arduino's "parsed data" private data structure.
* Added appropriate VIs for override in preparation for coding the
setlist parse/write functionality.
Implemented ParseSWI, Prune, PrepareHWI.
Implemented load and prepare HWI

Untested, but pushing to lab computer for final testing.
Debugging serial communication with Arduino

Working, but needs to be tightened up and refactored.
Fixed Bug with slaved digital outputs

Pulseblaster was outputting the first ramp line last for slaved digital
channels. Fixed here; @ZJ also fixing on master branch since it is a
rather insidious bug.
Updated serial communication protocol; bug fixes

SetList now communicates entire setlist to Arduino in a single line, and
SetListArduino should parse out individual commands after receiving the
entire packet.

Also fixed:

* Prepare/FinalizeHWI now separated out as needed to ParseSWI &
Prune/BuildHWI. Prepare and Finalize are simply parent calls.
* Fixed bug in which PruneHWI didn't remove lines based on ramplist, ie,
disabled lines from grouping were still sent to Arduino.
* Generic refactoring of some code
Finished up Arduino device

Miscellaneous changes, some of which may or may not be important since
last commit. But everything appears to be working now.
Merge branch 'master' into SetList-Arduino

Conflicts:
	SetList.lvproj
	codes/DeviceVIs/Pulseblaster/Set Slaves in HWI.vi

codes/DeviceVIs/Pulseblaster/Set Slaves in HWI.vi was the same change in
both branches, took the one from the master branch.

SetList.lvproj was both branches adding separate dependencies.  Conflict
was resolved by adding both sets to the .lvproj file manually.

Result opened and ran fine, closed without requesting saving.
Add TCP-based Mulligan requests (Closes #65)

To allow the imaging computer/any other source to request a Mulligan for
an item from the control computer's history, set up a service to listen to
TCP port 50291 and attempt to change the status to "Waiting" for matching
file numbers.

SetList expects Big-endian signed integers over the TCP connection, and
echos bag the integer upon receipt.

See the wiki page
documentation:software:computercontrol:setlist:feedback#mulligans
for more info.