Introduce engine version for workflow executions
This PR introduces Texera engine version to each workflow execution. The engine version is a hash code created automatically when the Texera is run. The engine version is not shown in the front end but can be checked in the sql for now.
Operator version is introduced. Any modification of the operators in the Texera will be traced (from the code implementation perspective). The Operator version we generated is the git commit hash code that is related to the latest operator implementation changes. Now, the environment version that is associated with each execution would have engine version (front end) and operator version
- Instead of having one operator version for all, we retrieve the latest git commit hash code for each operator individually.
- The latest version of all operators are retrieved and updated once the Texera Web Application start to run and are stored into a file named
operator_version.properties. - Each operator's own version is displayed like a footnote in the operator property editor (see the GIF below)
- The corresponding version of the operator will be stored in sql so that it can be retrieved when we want to view a particular execution and see if the operator version has changed.

Operator version frontend display updated

please add test cases
Enable to highlight operator version if the operator version is different in workflow version track.
Demo:
