Loading projects too slow because of File.isDirectory calls

Details

Description

With lazy loading, Jenkins no longer reads $JENKINS_HOME/jobs/*/builds/*/config.xml during startup. But it still checks File.isDirectory on the containing directories, which makes loadIdOnDisk slow. It should suffice for RunMap.createDirectoryFilter to assume that any file in builds which matches the date pattern for a build directory is in fact a directory. (If it is not, retrieve will return null later, so no harm done.) loadIdOnDisk could also avoid calling dir.list twice (once for build directories, once for shortcuts): call it once and filter appropriately.