Update analysis job objects

This adds some functionality to job objects that is needed for the commands selection page. Exists now properly checks the data used for the job, and delete now works for jobs.
We decided a while back when planning the objects that delete should be outside any given object, so you could rapidly delete objects without instantiating anything. If you look at the base class, it has delete as a classmethod that just raises a NotImplementedError. Because of this setup, we need to pass the id to delete.