Removed recursive BuildSiteMap calls as this is now the responsibility of the SiteMapLoader class.
Renamed file for UnknownSiteMapException to match class name.
Made all custom exception classes serializable as some application frameworks may require this to be the case.
Fixed SiteMapLoader/SiteMaps entry point so the semantics of the cache key to SiteMapBuilderSet configuration can be easily overridden by the host application.
Added serializable attribute to AmbiguousControllerException.
Removed unnecessary SiteMapLoaderFactory implementation.