At present, a Relayer observer instance can only observe a single source. This PR introduces a multi-source observer that can dynamically be configured to manage any number of different sources simultaneously. The sources observed can be of different contract types or have different finalisation requirements. The multi-source observer works by managing a set of other observers. This PR also includes general code refactoring and other small improvements to the code-base.
At present, a Relayer observer instance can only observe a single source. This PR introduces a multi-source observer that can dynamically be configured to manage any number of different sources simultaneously. The sources observed can be of different contract types or have different finalisation requirements. The multi-source observer works by managing a set of other observers. This PR also includes general code refactoring and other small improvements to the code-base.