add IHierarchyNode, TreeNode and HierarchyNode

IHierarchyNode is a mixin used to interface custom objects with various components of Nucleus

TreeNode is a general purpose hierarchy node collection

HierarchyNode is an extended TreeNode designed for IHierarchyNode objects