Background jobs

This changeset introduces an abstraction for (maintenance) jobs running in the background, of which execution may be triggered from other threads. SubscriptionManager could very well use this, but I haven't made it do so yet.

~~@xor-freenet Unit tests are not complete, I'll be finishing those tomorrow. I'm filing this pull request early so you can have a look at it already.~~
Hmm, and I think my proposed JavaDoc change is not good enough yet: It should also be amended to indicate that detecting the interruption should cause the action of exiting the thread ASAP.
> Hence, the job implementer should take care to terminate the thread as soon as possible upon a shutdown request, both by honoring {@link InterruptedException}, and/or periodically checking the {@link Thread#interrupted()} flag of its {@link Thread#currentThread()}.