added private field visibilityAffectsDescendants and logic to use it.
Initialization of the field still hard coded to false to preserve current behaviour
Added visibiltyAffectsDescendants as param/prop/field to various interfaces and implementations so it can be used through configuration using internal DI or instantation through external DI, default value is false.
Corrected the logic in XmlSiteMapResult and changed to a parameter rather than a class-level variable for visibilityAffectesDescendants. Changed the default for visibilityAffectsDescendants to true to make it backward compatible with v4 (except for the XmlSiteMapResult, which is changing from false to true).
Defaulted VisibilityAffectsDescendants to the ISiteMap.VisibiltiyAffectsDescendants property in the MenuHelper and SiteMapHelper, as well as the SiteMapNodeModel. Changed drillDownToContent overloads to drillDownToCurrent of the MenuHelper so they are consistent between overloads (verfied they were controlling the same thing). Updated the documentation to include visibilityAffectsDescendants and drillDownToCurrent in the MenuHelper. Closes #261.
Updated test cases to implement the new VisibilityAffectsDescendants property, but so far no new tests have been written to test it (although it has been manually verified to work in an application).
Fixes #238, added setting MvcSiteMapProvider_UseTitleIfDescriptionNotProvided that can be used to turn off the feature of defaulting the description property to the value of the title property (defaults to true). This was done in the SiteMap class so the value is now stored only 1 time instead of 2.
Added CacheKey (SiteMapCacheKey) as a property of ISiteMap and ISiteMapSettings so it can be used within the SiteMap to build request caching keys.
Fix for initial issue described in #236, the SiteMapTitle attribute doesn't work when setting the CacheDuration to 0. The other issue in #236 (random exceptions) is still open.