State machine prototype

Initial state machine on Assignments. Wasn't able to put one on Tasks yet, since the pull request that contains the new Task model is still being approved. This should provide the general concept of how it's implemented and what it would look like. I can show via screenshare how this keeps state and what other functionality it provides.