Robot rules

My unofficial hackathon project :)

Will allow us to dynamically decide what we want to do with jobs -- for now clear, retry, retry, retry with incrementing the retry attempt count extra. Criteria include job class, error class, error message, etc.,and a possible expiry so we don't become dependent on it.

Silo peeps: it can also be used in conjunction with Swappable to send BSC jobs to the API if processing them normally fails with a certain error.

Be aware that this is a public PR.

I still have to add a couple tests but wanted people to see this before the weekend.

@davidann @tony-bye

Yes, good idea, I'll see if I can do something simple enough. I tried to make it so it would crash the workers or do anything too bad if something is off -- i.e. things get turned into strings before made into regexes (so even a number won't crash anything)