Progress on cursor subclass implementation.
This patch includes many changes to the cursor subclasses to improve their utility in constructing and traversing models. + More methods allowing model traversal are implemented (or fixed) and tested as part of the `unitCursor` test. + The methods of `Storage` that return cursor subclasses are now properly wrapped in Python. However, many cursor methods that return arrays of cursors (e.g., Vertex::edges()) still cause segfaults as shiboken does not properly handle value/pointer conversion. + Add a VolumeUse cursor class. This is for the convenience of automating adaptors to other modelers. + The `createTet` test helper now properly models vertex-uses, edge-uses, face-uses, volume-uses, chains, loops, and shells and is used to test cursor-subclass methods. + It also adds a compile-time option to make the Storage class configurable between map and sparse_hash_map. The new (advanced) CMake option is named `SMTK_HASH_STORAGE`. When true, the `sparse_hash_map` is used for the maps between + UUID and Entity records; and + UUID and Arrangement records in addition to property names and values. This makes debugging issues with invalidated iterators simpler since `std::map` does not invalidate iterators upon insertion while `google::sparse_hash_map` does. + The browseModel demo now allows more in-depth inspection of the model but has some issues. (No exploration below face-uses.)