Replaced Xml.SiteMapXmlReservedAttributeNameProvider with Builder.ReservedAttributeNameProvider in preparation for migrating the reserved attribute logic inside of AttributeDictionary and RouteValueDictionary. Deprecated Xml.SiteMapXmlReservedAttributeNameProvider and Xml.ISiteMapXmlReservedAttributeNameProvider.
Updated all internal classes to use the IReservedAttributeNameProvider instead of ISiteMapXmlReservedAttributeNameProvider. The latter inherits from the former, so this is not a breaking change.
Eliminated the AcquireAttributesFrom() methods from the ISiteMapNodeProvider and ISiteMapBuilder implementations by replacing them with AddRange overloads on the AttributesDictionary.
Eliminated the AcquireRouteValuesFrom() methods from the ISiteMapNodeProvider and ISiteMapBuilder implementations by replacing them with AddRange overloads on the RouteValuesDictionary.
Eliminated the AcquireRolesFrom() methods from the ISiteMapNodeProvider and ISiteMapBuilder implementations by replacing them with AddRange overloads on the RoleCollection.
Eliminated the AcquirePreservedRouteParametersFrom() methods from the ISiteMapNodeProvider and ISiteMapBuilder implementations by replacing them with AddRange overloads on the PreservedRouteParamterCollection.
Eliminated the AcquireMetaRobotsValuesFrom() methods from the ISiteMapNodeProvider and ISiteMapBuilder implementations by replacing them with AddRange overloads on the MetaRobotsValueCollection.
Updated Add and AddRange overloads of MetaRobotsValueCollection, RoleCollection, and PreservedRouteParameterCollection to be consistent.
Adding the "area" key in the RouteValue dictionary automatically, so it cannot be accidentally excluded from an ISiteMapNodeProvider implementation. Also made both the AttributeDictionary and RouteValueDictionary safer by making the Add and AddRange overloads automatically overwrite existing keys rather than throwing an exception.
Removed code for defaulting area to empty string from ISiteMapNodeProvider and ISiteMapBuilder implementations bacause it is no longer required.
Refactored inheritance logic of area and controller and moved logic to the top of the module so the SiteMapNode keys will match area and controller even when inherited. Broke the inheritance of controller and action into separate methods. Fixed incorrect overload of AddRange calls in AspNetSiteMapBuilder and AspNetSiteMapNodeProvider.
Removed commented check to see if both same key is configured in the XML and inheritedRouteParameters.