DependentJob as a simpler replacement for raw Dependent

DependentJob ensures that the specified task executes whenever anything used during the task changes. This is useful for implementing pumps that forward changes from UpdateControls to external system not managed by UpdateControls. It is also useful to implement data triggers with non-GUI side effects.

Similar functionality can be obtained with plain Dependent. I find DependentJob much more intuitive with its Start/Stop methods than Dependent's OnGet/Invalidated/ScheduleUpdate.