Add external forces to DeformableRepresentation

This external force vector is persistent and is helpful to apply any number of punctual load on a model.
Useful for testing as well, applying a load at the end of a beam for example...
Adds DataGroup::isEmpty to test if it can be assigned to.

An empty DataGroup can be assigned to by any DataGroup that can be
assigned from (i.e., the assigner's NamedData are all valid).
VirtualToolCoupler is now inheritable.

The output DataGroup is built in doInitialize if it is empty, and
a helper function adds the necessary data entries to a builder.
So a derived class should call the helper function and then build the
output DataGroup before calling VirtualToolCoupler::doInitialize.
NamedData helper function to cache indices.
VirtualToolCoupler caches DataGroup indices.
Clarify documentation of DataGroup::isEmpty.
Add UnitTest for added feature
Bugfix linux/LabJackScaffold, name changes for LabJack structs.
LabJack digital inputs/outputs now use NamedData<bool>.

true for high input/output, false for low.
Adds digital output to LabJackVisualTest.

Also shortens variable names and reorders variables in filter.
LabJackDevice has enums for the channel/line/timer numbers.

These enums make the intention behind a number clearer, e.g., 5 -> FIO5.
Adds missing DataGroupBuilder include for VirtualToolCoupler.
Merge branch 'master' into feature/vtc-inheritable
Adds a NamedDataPerformanceTest that compares getting by name vs index.
LabJackScaffold, catch an error condition earlier: bad timer numbers.

Timer numbers must be consecutive.  For example, it is invalid to
enable timer #1 if timer #0 is not enabled.  The result will be an
error in configureTimers, but the error message provided by the
device library is non-specific, e.g., on Windows: "Timer sharing error".

This commit adds a specific test for this issue, and logs the reason
that the configuration will fail.
Linux/LabJackScaffold fixes for logging bytes, casting to ints.

Bytes stream as chars, but the data being held in these bytes are
actually small unsigned integers.
VTC has buildOutputData instead of a function that takes a builder.

This follows the interface for datagroup building functions in the
scaffolds.
Derived classes should override buildOutputData, in which they will
do builder.addEntriesFrom(VTC::buildOutputData()).
Serialize shape used in RigidCollisionRepresentation

Also revised UnitTest.
More Debug/Info logger messages in InputManager.

Logs which devices get added, and which device is connected to each
InputComponent and OutputComponent.
Use Localization and matrices K/D in addExternalGeneralizedForce API

The localization is representation specific, so addExternalGeneralizedForce is now virtual pure and concrete in all derived classes.
Note: Fem1DRep and Fem2DRep do not implement it yet, as they don't have a dedicated Localization class yet.

The K/D matrices are the stiffness and damping matrices, both derivatives of the force w.r.t. position/velocity.

cpplint/doxygen/linux32/linux64 clean