Making StreamIndexedIO::Node work as MemberData, where it holds a pointer to the global Index and to the low level DirectoryNode.
Adding a specific class for DirectoryNode that holds the information loaded from the index.
Adding a member m_nodeType in NodeBase to distinguish derived classes without adding virtual methods.
Replacing the std::map to a sorted vector and sorting by the m_name field.
Using char instead of the enums in the structs to compact members in one word.
Original struct sizes were StreamIndexedIO::Node 104 bytes and DataNode was 56.
Current struct sizes are DirectoryNode 56 and DataNode 40 bytes.
Changing StreamIndexedIO member from intrusive pointer to raw pointer.
This does not affect the class size and should not break binary compatibility.
As a consequence the Node class reduced from 32 bytes to 16 bytes (not derived from RefCounted anymore).
Fixing bug by checking if pointer is valid. Now all tests passing.
Adding SmallDataNode class (24 bytes long on 64bit machines) when the data is small enough and avoid the big DataNode struct (40 bytes).
Updating comment.
Adding a compact Node class for representing non-expanded subIndexes: SubIndexNode (24 bytes).

This helps on the memory requirements for opening a file with a large amount of stored Objects. In particular, large LinkedScenes.
Bug fix: considering the new SubIndexNode a IndexedIO::Directory node for the purposes of filtering child entries by type.
Being more frugal on the usage of the mutex that controls access to the hierarchy of Nodes.

Added a boolean in each Directory node that will be true only if there's a child that is SubIndex and only uses mutex on these locations.
Also, avoids keeping the mutex locked while reading the subindex or during deallocation of duplicated Directories.
Removing conditional on delete.
Protecing member variables from the Node classes.
Adding some comments to explain better the rationale behind them.
Merge pull request #228 from ldmoser/streamIndexedIOrawNodes

Reducing memory footprint in StreamIndexedIO