Modules
A use case is either a module that exports a unary exec/1 function, or any
unary function (an fn closure or a &Module.function/1 capture).
Interact.UseCase wraps either form in a struct and provides a pipeline for
controlling execution.