More backends

Mostly silly stuff. When I wrote a tutorial on how to write a redis backend this happened. It was easy, so I just chucked it in a commit with another inane backend. Also, test generators are fun. Incidentally fixes 
#3.
This test runs for some arbitrary number of subclasses, but between test runs you don't get any good indication of whether it ran for all the subclasses you wanted it to run for or not.

A better way to do this is to have a test class for each backend and throw a SkipTest (or equivalent) if the test can't run because the dependencies aren't available for the backend. That way when you run the tests, you see successes, failures and the tests that were skipped.