Introduce execution snapshot
This PR enables users to view the snapshot of the execution in execution table. We introduce workflow-snapshot table in sql to store every execution's snapshot.
For now, an execution's snapshot will only be updated if there are addition/removal of operators. Changes such as reset operator properties or move the operator around won't trigger the update of execution snapshot.
demo:

TODO: Suppose there is a snapshot A, if the last execution that is associated with snapshot A is deleted from the database, currently the snapshot A would still be in the database instead of being deleted simultaneously. In the future, this problem can be fixed by introducing Trigger in SQL.
Looks nice, I haven't looked at the code yet but from the review I see the sort icon is there, can we disable it for the snapshot column
Hi @liqinye another PR also recently updated package.json and yarn.lock, when resolving the conflict in yarn.lock, make sure to do the following in your local environment: delete yarn.lock and node_modules, then do a yarn install again, then commit the new yarn.lock file.
GUI updated:

Add version ID # above the workflow snapshot to differentiate the execution that has operator movement or property change
