DO NOT MERGE: Implemented new in-canvas view buttons

The ```StateMachine.State``` enumerator is now made private so it can only be accessed from within ```StateMachine``` class. These properties are provided as a way for external codes to determine the current state without ever needing to know about ```StateMachine.State``` enumerator.