Badpenny Part III

This adds the ability to register and run periodic tasks, as well as a cleanup task that serves (if nothing else) as an example.
Celery's job status is tied to the caller still running when the job completes, which is not the case here.