Extract core logic to SiteMapProviderBase

- This is the initial step to split MvcSiteMapProvider into modules,
especially exctract caching functionality and make nodes not to store
their states
Revert DefaultSiteMapProvider to be compatible with older version
Add *.DotSettings to .gitignore
Extract configuration from SiteMapProviderBase

- Extract Http caching functionality into SiteMapProviderBase wrapper
  (CachingSiteMapProvider)
- Introduce internal configuration classes to reduce copy-paste
- Add several Guard checks for method parameters
- Cover Guard, StringExtensions, both Configurations with unit-tests