Package io contains other packages that implement all relevant gateways,
presenters, controllers and other interface adapters. It corresponds to the
two most outer layers in the "Clean Architecture" diagram.
The io components provides input and output logic to interact with the "outside world".
Components in the io layer may not depend on other io components.