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.
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
Add PoseTransform to NimbleDevices in the Visual Test.
Replace boost::sockets with boost::tcp::iostream.

- Removes a lot of stream processing. Cleaner code.
Remove TokenStream and use operator>> on istream directly to parse hand
data.

- Removed the TokenStream/NimbleStream classes, unit tests.
Remove parseNimbleMessage() + Remove temporary stringstream + Pass by
reference to operator>>
Updated doxygen docs for the operator>> functions.
Add OpenGL libs to Nimble VisualTest + Disable MSVC 4250 warning.
Merge branch 'master' into feature/nimble-device2
Merge branch 'feature/nimble-device2' into 'master'

Adding a NimbleDevice (Hand tracking from Three Gear Systems).

Merged-on: https://www.assembla.com/code/OpenSurgSim/git/merge_requests/1140353
Adds unit tests for clearInputConsumers & clearOutputProducer.
Merge branch 'master' into fix/device-clear-consumers