Use BrambleCoreModule in integration tests
This branch refactors the integration tests to use BrambleCoreModule instead of ad hoc collections of smaller modules. This has two advantages:
- Tests are more realistic (in particular, they use real executors rather than ImmediateExecutor, and they initialise eager singletons in the same way as the real app)
- Tests are easier to maintain (when we add a new module we don't have to fish through compiler output to work out which tests depend on the new module)
The branch also adds a BrambleCoreIntegrationTestModule that packages the modules commonly used to configure integration tests.