Initial fix for supporting nested jobs from Jenkins servers
+ Added caching (2 seconds) around retrieval of all jobs
+ Added saving the actual WebURL of the job to JenkinsProjectManager entity
+ Modify JenkinsProjectManager to use the WebURL if present for calls
+ Modfiy API functions to support WebURL override
+ Add interface for API and an ApiFactory to improve unit testing of JenkinsTransportExtension
Polling for all jobs while in GetCruiseServerSnapshot is not required if the previous list of jobs has been retrieved and cached as this method is only called to update the statuses of existing known projects that have already been added to CCTray.

Thus, if we are using a cached copy, and a new job is added to the jenkins server, it does not matter since it can't been in our CCTray screen until we open the configuration and add it, at which point GetProjectList() is called which gets a fresh job of the jobs from the server.

Massive improvement in responsiveness if you are monitoring a single job from say https://builds.apache.org versus the prior implementation
Some unit tests to assert the changes in GetCruiseServerSnapshot
Pull request #4 comment changes
Merge pull request #4 from nrjohnstone/master

Add support for nested jobs, caching, and performance enhancements for job status updates