Unify JobCallback and Callback

I forgot about this changeset. Significant and breaking, but reduces complexity for the consumer.

Consumers can supply no JobID (or JobID.Invalid) and get all callbacks, or supply a JobID and only get a callback for that JobID. There is only Callback<T>, and no longer a JobCallback<T>.

If a Callback is not associated with a Job then it has a JobID of JobID.Invalid.