Code needed to inject dependencies into CRABClient

Ideally, testing involves both unittesting (doesn't touch external
services) and fuller testing (sometimes called integration testing).
This is a first step to allow testing with external services by
injecting "fake" classes that look and feel like external services