Make ViewElement onws a Keyboard Device

ViewElement class now has a shared KeyboardDevice object.

OsgViewElement could decide whether or not to use KeyboardDeivce.
Merge remote-tracking branch 'origin/master'
Clean up headers, add dynamic libs in CMake file
Fix typo in MouseDevice CMakeList
Change signature of ViewElement::getKeyboardDevice, make it pure virtual

Make method "getKeyboardDevice()" return a shared pointer to
CommonDevice instead of KeyboardDevice.
Also, make this method pure virtual.

Fix ViewElementTests and ManagerTests since they used to use ViewElement
(which is now pure virtual).

Let OsgViewElement uses keyboard device by overriding
ViewElement::getKeyboardDevice().
Merge remote-tracking branch 'origin/master' into wip/ViewElement-Keyboard

Conflicts:
	SurgSim/Graphics/OsgViewElement.cpp
	SurgSim/Graphics/OsgViewElement.h
	SurgSim/Graphics/UnitTests/ManagerTests.cpp
	SurgSim/Graphics/UnitTests/ViewElementTests.cpp
Roll back files covered by mering Master
Make OsgViewElement owns a shared Mouse Device

ViewElement class defines the interface to return a Input::CommonDevice

OsgViewElement decides whether or not to use the owned MouseDeivce.
Implement MassSpringRepresentation::applyDofCorrection

- applyDofCorrection updates the representation's velocity and position
- Added error checking for whenever state is updated (after applying DOF correction,
after calculating the next time step in free motion)
- Implemented unit testing for ApplyDofCorrection
Add 'enableKeyboard/Mouse' into ViewElement's interface.
OsgViewElement class revision

1. In setView(), if the new view is the same as the old one, nothing
   will be done; setView() will return immediately reporting its success.

2. Avoid shortcut evaluation in &&, || expressions.
   To make logic more clear.

3. If keyboard/mouse is already turned on/off, no need to turn it on
   again.
Revise ManagerTests.cpp and ViewElementTests.cpp

1. Drop MockViewElement in ManagerTests, since it's useless.

2. Simplify unit test for ViewElement class.
   After all, it's an abstract class.
   No need to test its pure virtual methods (Those methods will be
   tested in derived classes' unit tests.)
Merge remote-tracking branch 'origin/master' into wip/ViewElement-Keyboard

Conflicts:
	SurgSim/Graphics/UnitTests/CMakeLists.txt
Added xml output to the gtests

For use with the Jenkins build server, this change has the unit tests
write their results into an xml file.
Create a NullOutput for Logging

Create a null LogOutput for logging. The NullOuput will do nothing when
the writeMessage is called.
Make Logger::getLoggerManager a public function

getLoggerManager was a private static function to used internally by the
loggers. However, sometimes it is necessary to access the logger manager
from the outside to set default outputs and default thresholds. This
change makes the function public.
Create our own gmock main to disable logging

In order to turn off logging during the unit tests, this creates our own
custom gmock main (Testing/TestingMain.cpp). This is similar to the one
included in the gmock, except it sets the default logging output
to NullOutput. Thereby disabling the logging messages that clutter up
the unit test output.

Because of this change, all the unit tests need to link against gmock as
well as gtest.
Remove printfs from Mlcp Unit tests

The MlcpGaussSeidelSolver Tests were using printf to display messages
during unit tests. These are removed, as this isn't a good practice.
Removed expected message from BasicThreadDeathTest

Since we no longer log anything during unit tests, "Failure" doesn't
appear in the error output after a basic thread dies. So we just remove
this regex check.
Remove cout in Assert Unit Tests

Remove the messages during the Assert Unit tests. Since the Assert isn't
logging to the console anymore, these messages aren't usefull.