State refactor

Refactored `State` to better handle changes.

* Internal `_State` methods don't do external updates.
* Public `State` methods wrap internal methods to trigger external updates at the end of the call.
* External uses of `State` methods are reduced so each change can be fully handled by one single `State` call, thus only triggering updates once.

This also fixes #31, since now `rotateState` triggers the correct updates.