Updated SiteMap so it uses the new decorator classes to handle the Lockable and RequestCacheable functionality.
Removed commented code and refactored some methods to shave some lines off of the SiteMap class.
Fixed a problem with the ChildNodes and HasChildNodes properties of LockableSiteMapNode and RequestCacheableSiteMapNode as they weren't being looked up properly. Added the decorator classes to SiteMapNodeFactory.
Modified SiteMapNodes to use decorator pattern, however the implementation is still broken because internal references to "this" are inconsistent.
Removed IDefaultSiteMapProvider interface.
Removed controllerTypeResolver from interfaces and injected it directly where needed. Fixed DefaultAclModule so it accepts injected child modules.
Changed SiteMap decorator classes to inherited classes because the decorator pattern does not seem viable in this case.
Removed ISiteMap parameter from BuildSiteMap because it was only required when using decorator pattern.
Added base classes SiteMapNodeSecurityBase and SiteMapNodePositioningBase to break up responsibilities.
Fixed issue with securityTrimmingEnabled causing errors when looking up child nodes.
Renamed DefaultAclModule to CompositeAclModule for consistency with other composite classes.
Changed LocakableSiteMapNode to use inheritance rather than the decorator pattern.
Modified RequestCacheableSiteMapNode to use inheritance rather than the decorator pattern.
Moved ThreadSafeDictionary to the Core.Collections namespace and moved the interface to a separate file.