[WIP] relation integration

OK this is a big one. I basically rewritten everything since previous implementation didn't have enough functionality required by ROM and frankly wasn't really a session, it was a state tracker with identity map and persistence interface.

I more or less explained the concept in [this commit messsage](https://github.com/rom-rb/rom-session/commit/3625d4aef7884231a629a73a2e57dea1f54c1fea).

It is still a WIP but as always I'm opening a PR to discuss.

TODOs:

- [x] split specs into dm2-style
- [x] and add missing specs to get full mutcov
- [x] make state sub-classes immutable (but only the ones that expose `#commit` interface)
- [x] move state sub-classes to separate files
- [ ] add more complex scenarios to integration specs