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

If you update GetAllJobs() method as suggested above, then you don't have to set _allJobs like this and you can just call GetAllJobs() instead, or maybe _allJobs, but I think it would be safer to use GetAllJobs().