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

Yes but the difference is that GetAllJobs() will either return the cached copy saved in the local _allJobs field or retrieve the latest results from the server and then save them, and return them. I think the name of the method is badly named, I'll refactor it to make it more explicit.

The main gist of the change is that GetCruiseServerSnapshot() is only ever called by CCTray while it is polling the jobs selected for monitoring, thus it is unessacery to keep retrieving the list of jobs each time, in fact if you are monitoring a site like Apache it leads to large delays for monitoring even just a single job !