add Diagnostics section to `State`, methods `print` and `decodeAttributes`
use proper `state.define` function instead of `state`
consistency/typo fixes
add prototypal state test for `State::query`
Introduce `GuardMap` structure; rearchitect state guards; add/strengthen tests

- Touches #17, #21

- defines new `GuardMap` structure as standard format for expressing
guards, including standardized evaluation implementation

- redefines `State::guard`, `addGuard`, `removeGuard`

- defines new `State::guards`, `addGuards`, `removeGuards`,
`evaluateGuards`

- removes private `RootState evaluateGuards` function