Make TriangleMesh inherit from Asset

TriangleMesh::doLoad() utilizes TriangleMeshPlyReaderDelegate<>
directly to load an external file.
Update MeshShape::doLoad() to call TriangleMesh::doLoad()

MeshShape::doLoad() now relies on TriangleMesh::doLoad() to load the
external file instead of loading the file directly.

Note, since 'doLoad()' is protected in Asset/TriangleMesh, MeshShape is
made a friend class of TriangleMesh.

Update UnitTests accordingly.
Make OctreeNode inherit from Asset

OctreeNode::doLoad() loads the external file directly.
Update OctreeShape::doLoad() to call OctreeNode::doLoad()

OctreeShape::doLoad() now calls OctreeNode::doLoad() to load the
external file instead of directly calling 'loadOctree()'.
TriangleMesh::doLoad() asserts 'fileName' contains a valid mesh.
In MeshShape::doLoad(), asserts the success of m_initialMesh->doLoad().

Add UnitTest
OctreeShape::doLoad() asserts the success of m_rootNode->doLoad()

Also, after load, OctreeShape::doLoad() will assert the loaded Octree is
valid. Otherwise, assertion will fail.

Add UnitTests for nonexistent and invalid files.
Add 'SCROPED_TRACE's in UnitTests, add 'class' in friend declaration.
Merge remote-tracking branch 'origin/master' into feature/triangleMesh-OctreeNode-Asset

Conflicts:
	SurgSim/DataStructures/UnitTests/CMakeLists.txt
	SurgSim/DataStructures/UnitTests/TriangleMeshTest.cpp
Fix failing UnitTest and Linux build failure
Merge branch 'feature/triangleMesh-OctreeNode-Asset' into 'master'

Make TriangleMesh and OctreeNode inherit from Asset

Merged-on: https://www.assembla.com/code/OpenSurgSim/git/merge_requests/1027064
Add 'setActive' and 'isActive' to SceneElement and Component
Revert "Add 'setActive' and 'isActive' to SceneElement and Component"

This reverts commit 3a8581978f60da4e158d8408ec42f4cdb9e14907.