handle state
* added `state` argument to `#push` and `#replace`
* added `#state` getter
* changed path getter to `#path`