Made the MvcSiteMapProvider_ExcludeAssembliesForScan, MvcSiteMapProvider_IncludeAssembliesForScan, MvcSiteMapProvider_AttributesToIgnore, and MvcSiteMapProvider_ControllerTypeResolverAreaNamespacesToIgnore settings safer by trimming the spaces after splitting the string.
Added exception message for when the XML file exists without a root node.
Added setting MvcSiteMapProvider_EnableSiteMapFile so XML file parsing can be disabled using the internal DI container.
Fixed bug in Order property of RequestCacheableSiteMapNode because the value could not be read.
Fixed problem with ReflectionSiteMapBuilder where it didn't allow parent-child relationships both ways between different assemblies.
Refactored ReflectionSiteMapBuilder so it doesn't rely on the Order property when adding nodes. Changed exception so it shows all orphaned nodes in one error message.
Fixed bug in internal DI container where it wasn't instantiating providers when defined on MvcSiteMapNodeAttribute.
Fixed bug in XmlSiteMapBuilder where it didn't allow parent-child relationships with sitemap nodes that appeared later in the XML than a dynamic node provider declaration. Refactored dependencies of XmlSiteMapBuilder and ReflectionSiteMapBuilder into facade services.
Fix for Unity MvcSiteMapProviderContainerExtension so the configuration won't break every time XmlSiteMapBuilder and ReflectionSiteMapBuilder have a constructor change.
Fix for SimpleInjector MvcSiteMapProviderContainerInitializer so the configuration won't break every time XmlSiteMapBuilder and ReflectionSiteMapBuilder have a constructor change.
Reverted SiteMapBuilders back to their state in commit 995257973e5663c1c110ccb8592002788617a142 so we don't have any breaking changes in the next release.
Created ISiteMapNodeProvider interface to replace the original intent of ISiteMapNodeBuilder, which is to provide a low-level, chainable means to create sitemap nodes. ISiteMapNodeBuilder couldn't work for this purpose because the nodes must be added to the sitemap in a specific order for them to map correctly to their parent nodes.
Revert "Fix for SimpleInjector MvcSiteMapProviderContainerInitializer so the configuration won't break every time XmlSiteMapBuilder and ReflectionSiteMapBuilder have a constructor change."

This reverts commit 886420f56c879a4890b042f0418d3f31b07ec12f.
Revert "Fix for Unity MvcSiteMapProviderContainerExtension so the configuration won't break every time XmlSiteMapBuilder and ReflectionSiteMapBuilder have a constructor change."

This reverts commit 0881173370eb643d672d3ab8f0a9cd174777de9e.
Created MvcSiteMapProvider_IncludeRootNodeFromSiteMapFile setting to allow parsing of the XML without including its root node. This allows multiple XML files to used to specify a single SiteMap.
Fixed the SiteMapBuilder orphaned node error message to use the correct resource key.
Fixed the logic in XmlSiteMapNodeProvider so dynamic node providers are only processed a single time per declaration, and the first dynamic node provider is completely processed before the next one is started.
Fixed some logic bugs in the XmlSiteMapNodeProvider dynamic node processing.
Cleaned up the comments and NodesToProcess flags enum in XmlSiteMapNodeProvider
Reverted node key logic to include the parent key because it broke the nested static node for dynamic node functionality.