Client side needs state machine models

The state machine models can form as base models that are extended and specialised for the different parts of the ui where state-like objects exist (for eg, states in the dialogue screen, the model for the routing block, or the campaign details set up screen). 

These models don't necessarily have to serve as the models which are syncing with the server side (although they can be), but can be used as intermediate structures between non-state-machine-like objects synced with the server, and the state-machine-like views. This approach ensures we don't store data/attributes in the views (a violation of the MV pattern) in order to cope with the different nature of the objects we sync with the server and the views themselves.