still brainstorming how I want the statemachine to work.
Rewrote state machine to be function pointer containers w/ move semantics. Untested...
State's copy constructor/assignment now use copy/swap idiom.
Changed copy assignment operator to accept by const-reference rather than by value to eliminate 'ambiguous' operator issues.
Statemachine -> master merge resolution.