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.
I have thought we'd learned our lesson in the past to not store data in a single column as JSON, it really should be its own table and have a pointer to it. even if there are arbitrary keys. This just makes it harder to use smart data concat stuff with.  (its a common problem we hit with the buildbot ver we have)