State: simplify error types
test: add more complex `Volume.t` structures
doc: update `README.md`
lib: add function `State.get_status`
test: refactor the code using `State.get_status`
lib: clean-up code in `State.step`