State machine refactoring

Goals:
1. Provide testability of state transitions
2. Improve simplicity
3. Work out the edge cases
Added more tests for the StateMachine class
Remove the Queue label from pages

Queue name is actual only when job is added to a queue. Succeeded job
does not know anything about the queue.
State reason ArgumentNullException fix