Why is it important to derive from BaseBackend?  Won't this prevent you from using mocks in tests, and why can't I make a Backend all on my own without inheriting BaseBackend?

It's common in Python to not check these sorts of things, and let exceptions happen later (or not!).