Strongly-typed volume and snapshot states (fixes #130)