Add OpenNI device

Add a new device that supports depth sensing cameras, ie the Asus Xtion
Pro. These devices produce color images and depth images.

This commit includes both unit tests and a visual test.
Add GLUT include directory to OpenNIVisualTest + Fix for double to float
conversion warning + Change uint (unrecognized) to unsigned int.
Add comment to OpenNI doxygen page about PATH

On Windows, you need to add the OpenNI2 Redist directory to your PATH in
order for the VisualTest and UnitTest to find the OpenNI dll's. This
change adds a comment to the OpenNI documentation about this.
In the OpenNI device rename "image" to "color"

Renamed the images data group entry from "image" to "color" for the rgb
color image provided by the OpenNI device. This makes the distinction
more clear between the other "depth" image.

Also, clarified a couple of comments about converting OpenNI specific
image values to OSS values.
Add the other two build types to the yaml cmake file
Split Fem2DElementTriangle local & global computation + make local ones virtual

The local mass/stiffness are now split from the global transformation. And the local computations are now virtual methods.
This allows a derive class to extend the model to the drilling dof by simply overriding the computeLocalMass / computeLocalStiffness to complete the matrices with missing parts in the local frame.
Fix Fem2DElementTriangle membrane mass matrix calculation

The membrane mass matrix is defined per axis (no coupling across axis), but was wrongly integrated in the code, creating coupling between the different axis.
Also the membrane only involves the axis X and Y. The axis Z contribution should come from the plate equation, not the membrane.
The reference to Przemieniecki book "Theory of Matrix Structural Analysis" says that the same mass matrix as axis X and Y can be used for the Z axis, but is not correct and can lead to wrong behaviors.
Merge branch 'fix/yaml-cmake-file' into 'master'

Add MINSIZEREL and RELWITHDEBINFO to the yaml cmake config

+1: haizhouW, Ryan Beasley, Paul Novotny

Merged-on: https://www.assembla.com/code/OpenSurgSim/git/merge_requests/1193543
Update debug levels and message in OpenNI device

Change some debugging levels to SEVERE, since they occur when the OpenNI
camera is unusable. Added some debug info to a couple of asserts.

Also, removed a check of how many devices are connected. This was added
for debug purposes and isn't needed.

Added doxygen comment for the return value os
OpenNIDevice::isInitialized
Remove unneeded libs from OpenNI UnitTests

A couple of libs don't need to be explicitly linked into the OpenNI unit
tests.
Move initialization to doInitialize in OpenNIScaffold

Move the sdk initialization into the thread doInitialize. Also, during
registerDevice, start the thread if it hasn't been started, and wait for
it to be initialized before adding the device. This is required becuase
the SDK must be initialized before a new device can be added.
reset datagroup entry in OpenNI if no data

If no data is read from the OpenNI camera, reset the entry in the data
group to indicate the data is invalid. Note, if OpenNI's readFrame does
not return STATUS_OK, this indicates something is wrong, not that there
is no data.
Add NimbleDevice to the devices doxygen page
Prevent doxygen from creating large graphs

With the upgrade to doxygen 1.8.8, for some reason dot is having trouble
creating some of the larger graphs, causing dot to seg-fault. This
change disable the include and included by graphs, that are very large.
Also, limit the number of levels the graphs will go, from unlimited to
2. This also has the advantage of making sure the graphs don't get too
large.
Fix doxygen issue with static_assert

It appears that doxygen 1.8.8 has a problem with static_assert. ie, it
can't find declarations for functions defined after static_assert. To
sidestep this issue, this changes the template parameter (BlockSize)
from int to size_t. So there is no longer a need to call static_assert
to make sure BlockSize is greater than zero.
Turn off eigen alignment for 32 bit systems

Eigen alignment is working inconsistently on 32 bit linux in Release
mode, and not at all for Debug 32 bit builds. So we will turn it off by
default for all 32 bit systems (it was already off for 32 bit Windows),
and leave it on for 64 bit builds.
Merge branch 'master' into feature/device-openni
Update OpenNI with surgsim_add_* changes

Updated OpenNI to use the new signature for surgsim_add_library. Also
use surgsim_add_executable for the visual test.
Merge branch 'feature/device-openni' into 'master'

Depth camera device using OpenNI

Merged-on: https://www.assembla.com/code/OpenSurgSim/git/merge_requests/1189513
Merge branch 'fix/fem2DTriangleMembraneMass' into 'master'

Fix bug in Fem2DTriangle membrane mass matrix

+1: Ryan Beasley, Gughan Sathyaseelan, Paul Novotny

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