Serialize OptionalValue.
Serialize SurgSim::Input::InputCompoment.
Serialize SurgSim::Input::OutputComponent.
Adding accessors necessary for Serialization of VirtualToolCoupler.
Remove assert from Componenet::encode<shared_ptr<T>).

- This allows components which contain empty components to be serialized.
Serialize VitualToolCoupler behavior.
Merge branch 'master' into feature/serialize-vtc-behavior
Add testcase to decode empty node into OptionalValue.
Updated public interface for VTC + Updated serialization.

- OptionalValue is the only variable serialized.
- Double variables introduced to store the actual vtc parameters used.
Replace ? operator with if/else.
Handle input/output/representation getters/setters in Componenet pointers.
Serialize both :the members of OptionalValue (hasValue, value).
Merge branch 'master' into feature/serialize-vtc-behavior

Conflicts:
	SurgSim/Physics/VirtualToolCoupler.cpp
Fix a missed change from merge with master.
Use non-empty receiver OptionalValue to confirm invalidation while
deserializing an empty node.
Merge branch 'feature/serialize-vtc-behavior' into 'master'

Serialize VitualToolCoupler behavior.

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