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

This is basically my previous api pull request but stripping the
api part and adding only the testing bits