Now watchers have their own classes (instead of being in functions in the main file). This improves maintainability and extensibility.
A custom session that (hopefully) can be used by all watchers was created to improve separation of concerns and enable fine-grained settings on the requests (timeouts, retries etc.).
Added static types and comments to the config entries to prevent configuration errors.