ParticleSystemRepresentation::getParticles returns BufferedValue

- For both thread safe and unsafe access to the Particle System's
  particles, have getParticles return a BufferedValue. The safe access
  will return a copy of the particles from the last time the particles
  were "published". Unsafe access provides direct access to the current
  particle state.
- In addition, modify BufferedValue to be able to take two types. The
  safe type and the unsafe type. This allows us to use ParticleReference
  for the unsafe type and Particle for the safe type.
Disable error from default template arguments in functions

C++ allows for default template arguments in functions (since C++0x),
just like in classes. Visual Studio produces an error, however. This
change disables the error when using Visual Studio.
Revert "Disable error from default template arguments in functions"

This reverts commit 93802ad1162132f4454a9f1678eea34ec8eb573f. This
didn't fix the problem, just introduces another error.
Handle conversion of containers in the BufferedValue

Create two version of a private doPublish, that is selected based on if
the contained type is a container or not. If it is container, it does a
container specific copy. To allow for T to be copied to ST if they are
different container types, but their contained type is compatible.  This
is used to copy a container of ParticleReference to a container of
Particle in the Particles library.
Add EmitterRepresentation and ParticleManager

- Add an EmitterRepresentation that emit particles into a particle
  system. UnitTests are also included.
- Add ParticleManager to manage both emitters and particle systems.
  UnitTests are inlcuded.
- Have ParticleSystemRepresentation::update return void to match the
  EmitterRepresentation and all other components in OSS that have an
  update(dt) function.
- Move the mock objects into a common MockObject.h/cpp in the particle
  unit tests.
Log everything in Particles to the "Particles" log
Emitter now uses its pose

- The emitter now uses its pose when calculating the position of new
  particles.
- Added unit tests to check the pose is being used correctly
- Also fixed that you weren't allowed to set the emitter mode to
  EMIT_MODE_VOLUME becuase of an incorrect check.
Add Serialization to EmitterRepresentation

- Add serialization and appropriate unit tests for the
  EmitterRepresentation.
- Also, to allow for serialization change set/getMode to use int instead
  of ModeType.
Add serialization to ParticleSystemRepresentation

- Add serialization properties to ParticleSystemRepresentation
- Update the MockParticleSystem for serialization
- Add a "Target" porperty to the EmitterRepresentation for serializing
  the target ParticleSystemRepresentation
- Use the MockParticleSystem for testing the EmitterRepresentation
  serialization
Replace hidden tab with space in ParticleManager.h
Remove the use of BufferedValue in ParticleSystemRepresentation

Instead, just explicitly provide two access functions that makes the
type and intention more clear.
Revert BufferedValue changes that allowed 2 types

revert 38cd6b94d66773cd698ba1f28ef4089b793c6b6a and part of
06d7e045e59c6c01939a32ea3bb1d0989a657f7c. These delt with allowing
BufferedValue to take two types, one for the safe and the other for the
unsafe access. Reverting these changes to keep the BufferedValue simple.
Fix spacing and documentation in EmitterRepresentation
Merge branch 'feature/particle-emitters' into 'master'

Add EmitterRepresentation and ParticleManager

Merged-on: https://www.assembla.com/code/OpenSurgSim/git/merge_requests/1299683
Limit time spent lock in BufferedValue

Limit the time spent locked during publish in BufferedValue, and
similarly in the ParticleSystemRepresentation. This change moves the
construction and desctruction of the copied data outside the lock. Just
does a shared_ptr swap inside the locked scope.
Merge branch 'master' into feature/safe-get-particles

Conflicts:
	SurgSim/Particles/ParticleSystemRepresentation.cpp
Merge branch 'feature/safe-get-particles' into 'master'

Add thread safe and unsafe access to particles in a ParticleSystem

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