Patch changeListener to better sync self.current

Patch changeListener to better sync `self.current` when it's out of sync and when it's not.

- [x] needs tests
- [x] revised tests
- [ ] review tests and implementation

Closes https://github.com/omniscientjs/immstruct/issues/12