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.

- [ ] needs tests

Closes https://github.com/omniscientjs/immstruct/issues/12