ExpiredJobReaper: initial implementation

Since the Job.expires field doesn't exist yet, this initial implementation
actually undeploys *all* jobs every minute or so. So don't merge it.