Pros to an interface
- Users can tuck extra metadata into their implementation
- Manually creating State structs smells funny
Cons to an interface
- Allows "clever" implementations of methods that should just be getters for immutable values
- Suggests/forces custom implementations which is extra work for users
- Custom implementations mean Yet Another Place to Hide State.
Since #133 just merged I'd rather see how far the Task interface gets us than rush and interface-ify everything and create useless complexity.