Changed semantics of FindSiteMapNode() to be the functional equivalent of what it was in the V3 MvcSiteMapProvider.
Reworked FindSiteMapNode() logic so it is optimized for MVC, but still uses classic ASP.NET as a fallback.
Removed unnecessary for loop in FindSiteMapNodeFromControllerAction in SiteMap.
Fixed FindSiteMapNode documentation.
Implemented Canonical Tag feature which can be used with either URL or Key of the canonical node.
Reworked collections and made a series of CopyTo() methods for copying the values from one node to another. Added SafeCopyTo() to DynamicNode and cleaned up DynamicNode logic.
Removed commented code and documented and streamlined DynamicNodeBuilder.
Updated XmlSiteMapResult so it will automatically exclude any nodes that have a canonical URL assigned as they are not meant to be indexed.
Rearranged the order of properties in ISiteMapNode, SiteMapNode, SiteMapNodeSecurityBase, LockableSiteMapNode, RequestCacheableSiteMapNode so plugin properties are grouped together.
Changed sitemap so demo Canonical nodes are visible from the main menu and admin menu.
Removed commented reference to ICloneable as it is no longer required.