Feature persist workflow and stage

This is a biggin

* Refactor TaskController -> TaskAPIClient
* Create StageAPIClient, WorkflowAPIClient
* Create AbstractEntityManager, StageEntityManager, WorkflowEntityManager
* Refactor TaskEntityManager to use AbstractEntityManager
* Create IDCache for converting from IDs on the client side
* Persist Workflow and Stage in database.
  * Workflow.stages and Stage.tasks as list of IDs
    * This is done so we don't run into the depth issue.
  * Owning object is transient only
* Double clicking stage title allows you to edit
* Added New Stage button


a FIXME comment just means that it might be nice to do in the future