Add Slave Channel to Master's Private Data

Prepping for adding ability of slave device to control the output state on
one (or more) of the master's channels by adding a piece of private data.
Using an array of clusters, where each cluster represents control of a
single channel.  Cluster has a numeric element given channel index and an
array of booleans indicating state.

The array will be ordered in the same way as Ramp List (reverse-time
order) to keep processing consistent.

Changes were made in a strict TypeDef, so they propogated out to all
necessary locales.
Update Slaved Digital.vi method for Device calls

Implemented a method devices can call to update the master's Slaved
Digital Channels.  Add passed information to the array of slaved digital
channels.

Does simple error checking by checking for multiple entries per channel.
Only reports collision, not which devices it came from, as the master
doesn't know who pushed what into the array.
Add Check_Reserved_Lines.vi for control collisions

Since the user is free to specify any master channel as a slave or trigger
line at the device level, and devices don't know about each other, we need
the PulseBlaster to check for control collisions.

Errors Checked:
- Asking to control an unreserved line (Handled here)
- Trying both to trigger and use as a slave line (Handled here)
- Trying to control as slave channel twice (handled in Update Slaved
  Digital.vi)

Errors Not Checked:
- Multiple attempts to trigger a channel (not possible due to trigger
  structure)
- Trying to control a channel that doesn't exist

Not Errors, so Not Checked:
- Not trying to control a reserved line
Move some error checking into Master

Because we presumably want _every_ master to check for conflicts between
slave and trigger channels, that functionality was moved to the master.
Since the master knows nothing about reserved lines in its children, it
outputs the channels it expects to be controlled.  This is
Check_Control_Conflicts.vi

Checking whether a controlled line is reserved is done in
Check_Reserved_Lines.vi, and it takes the list of controlled channels and
compares it against what channels were reserved.

FinalizeHWI.vi was updated with this error-checking done first.
Add & Call "Set Slaves in HWI.vi" in PulseBlaster

Continuing Slave Digital channel implementation by adding a Set Slaves in
HWI VI to the PulseBlaster interface and calling it early in Finalize.  As
a master device this means it will get called after all other devices have
had a chance to populate the private data.

It must get called first to ensure all lines have the correct output data
_BEFORE_ expansion by the rest of Finalize HWI.

Works by first flattening all slave channel requests into a single binary
number to be ORed with the extant VLIW output data.  Then it loops over
all VLIW instructions and uses the stored ramp info to determine which
mask to OR with each VLIW line.

Untested, will be making and removing dummy class to test in the near-term
future.
Add device `Slave Line' for testing purposes

Back-end for Slave Line generated to enable testing of Slave Line
interface.  Is a 1-column device that only does slave control of a single
master channel.  There is no reason to use this for anything but testing,
so it will be removed from the UI (though the code may remain) before
merging to master.
Temporarily add Slave_Line to device manager

For testing purposes only, temporarily include Slave_Line in device
managed.  Will be removed before merge with Master.
Fixed Set Slaves in HWI y<<x instead of x<<y bug

Was binary shifting master channel number by channel state (wrong) instead
of shifting the state over by the appropriate number of places for the
binary channel number.
Remove Slave_Line from Device Manager

Testing is over, so remove Slave_Line from Device manager so it doesn't
confuse end-users.  Effectively reverts 83749a0.
Error Ring to Simple Error Handler to avoid dialog

Error Ring appears to force the generation of a dialog box, so now we use
the Simple Error Handler as in other locations to suppress the dialog in
favor of errors appearing in a standardized location in SetList.
Merge branch 'Add-Slave-Digital'

Closes #14:
Adds the ability to control a reserved channel on the Master device from
another device.  Devices have no direct access to the hardware image, but
instead request outputs by channel number and state.  The Master device
applies these requests in Finalize HWI.

Resolves #31:
Error checking is performed to prevent various conflicts in control
methods:
- Controlling an unreserved line as either a slave or a trigger (specific
  case of #31)
- Controlling a line multiple times, in either slave-slave or
  slave-trigger pairings
No checking is performed for trigger-trigger collisions, as this isn't
possible with the current data structure.  See commits 056acfe and 8227ef7
for details on error checking.