The two Contacts in a contact constraint do not add/subtract the depth.

This change should not affect any MLCP results.

The term in the b-vector for a contact constraint is the violation
due to penetration.
The Contacts know the normal, the position of one side of the contact,
and the violation, but the MLCP only needs to know the normal and
the positions of both sides...which it uses to calculate the violation.

To calculate the b-term, one Contact uses a
positive sign for its violation, and the other uses a negative sign.
As a result, any constant term (e.g., the distance to a plane with the
specified normal) added to both Contacts cancels itself
out.
Furthermore, the meaning of such a distance term is unclear. If one
of the objects is a FixedRepresentation, it would make the most sense
if the plane's distance was defined by its contact position.  On the
other hand, if both representation were rigid, it might make more sense
to put the plane in the middle, or to weight its position based on
their relative masses.  Previously, we used the depth (aka violation)
as the plane's distance, which is not physically correct and so was
confusing.

This commit removes the plane's distance from the contact calculations,
and adds comments explaining the deliberate decision.
Allow removal of removed triangles
Adding a NimbleDevice (Hand tracking from Three Gear Systems).

- Introduces a hand tracking device, which tracks the position and orientation of two hands (left, right).
- Works with the NimbleSDK from Three Gear systems.
- Requires a depth sensing camera like PrimeSense/Asus Xtion Pro etc.
- More details at http://www.threegear.com/
- Added Unit tests and Visual test.
- The position scale for the Visual Test is set to 0.0001 (1 m to 0.0001 m) to have the sphere be visible in the screen.
The LabJackDevice can now reset the hardware during destruct.

The hardware is designed to continue operation after communications
have closed, e.g., providing outputs.  This commit adds the ability
to reset the hardware, returning it to its default settings.
Note that resetting will cause USB re-enumeration and so will take a
few seconds before communications can be re-opened with the hardware.
Add Modules for OpenSurgSim extensions

Add a Modules directory to OpenSurgSim. This is a place for extensions
to OpenSurgSim, and any subdirectories added to this directory will get
added to the project.
Bugfix in LabJackScaffold determining which timer modes accept outputs.

The visual test now has the ability to test resetting a quadrature
timer.
Add images to the DataGroup
Add setters to NamedData that take rvalues (move)

To help reduce copying (especially with images), add setters to
NamedData that accept rvalues, and move the data instead of copy it.
Remove some duplication in NamedData

Removed some of the duplication in the NamedData class. There was a lot
of duplicate code for looking up the index from a name. So instead, we
use the getIndex member function, which does the same thing.
Add missing documentation to setters in NamedData
Add a TokenStream class to DataStructures.

- Parse stringstream in to various data types like int, double, Vector,
  Quaternion.
Minor refactoring + CMake file clean ups.

- Remove position scaling from NimbleDevice.
- Add more Nimble device documentation.
- Remove redundant dependencies from CMake files.
Avoid linking boost::regex as we don't use read_until() or
async_read_until().
Merge branch 'master' into feature/nimble-device2
Updates comments in FixedRepresentationContact.
Add PoseTransform to NimbleDevices in the Visual Test.
Merge branch 'feature/image-data-group' into 'master'

Add images to the DataGroup

+1: Julien Lenoir, haizhouW, Ryan Beasley

Merged-on: https://www.assembla.com/code/OpenSurgSim/git/merge_requests/1137343
Merge branch 'feature/modules-directory' into 'master'

Add Modules for OpenSurgSim extensions

+1: Ryan Beasley, haizhouW, Gughan Sathyaseelan

Merged-on: https://www.assembla.com/code/OpenSurgSim/git/merge_requests/1140713
Reduce code duplication in NamedData setters

Use the index based setter in the name based setters to reduce code
duplication.

Also, add a message to the assert in the name based setters.
Merge branch 'feature/nameddata-rvalue-setters' into 'master'

Allow moving data into NamedData

+1: haizhouW

Merged-on: https://www.assembla.com/code/OpenSurgSim/git/merge_requests/1137963