Replaced job field with asJob().
Renamed type variables for consistency with the names used in Job/Run.
Introduced RunMixIn so that Run itself does not have to deal with the details.