Redcap client cleanup

The end goal was to refactor the code so that the REDCap client could be injected as a dependency instead of passing around settings and allowing any low-level function to instantiate its own instance.

I recommend reviewing commit-by-commit.