feat($state): event when preventing state transition to self

Fire a `$stateChangeToSamePrevented` event when transitioning to self. 

This adds an end event broadcast for state change scenario A->B->A (currently, the `$stateChangeStart` event would be broadcast but neither `$stateChangeSuccess` nor `$stateChangeError` would signal the completion - meaning you can't cover the entire state transition via event handling).

Closes #1016