Initial test and REST client framework

This PR contains a rough outline of:
 * the test framework
 * the REST client framework
 * linting
Do we want to move the required fields out of the options or do we want to take this approach? I'm fine with either tbh