[AETHER-544][AETHER-523] Improve versioning of `tost` docker image and simplify build workflow

VERSION file is used for the release/tag process of `tost`.

Makefile.vars file defines the stable versions of each component
to be used during the build process.

Dockerfile.tost defines a docker label for each component
and uses the *_VERSION vars to set the docker labels.

Moves build logic inside app-build.sh. Build process is stopped if there are pending
changes in the repositories

Adds check-scripts target for shellcheck verify

Add fetch targets to update the repos

Deprecates the use of git-review for git fetch ref/changes/

Updates README to explain the new build process

Change-Id: I9a3f4b1b67064cd55c755330deaf6efef19ced22
diff --git a/Makefile.vars b/Makefile.vars
new file mode 100644
index 0000000..eebe099
--- /dev/null
+++ b/Makefile.vars
@@ -0,0 +1,35 @@
+#
+# Copyright 2020-present Open Networking Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+# Released tags, commits hash, branches and reviews / pull requests.
+
+# The APPNAME targets defined in the Makefile will download the repo and will try to checkout
+# the APPNAME_VERSION defined here, using the following methods in order:
+# (1) Checkout local source code (local branch not yet pushed);
+# (2) Fetch from Gerrit/Github (pending review in the form of refs/changes/... or pending pull request);
+#
+# The APPNAME-build targets will try to build with the given version, using the following sources in order:
+# (1) Download from Maven central (for released versions or snapshots);
+# (2) Checkout Local source code (local branch not yet pushed);
+# (3) Fetch from Gerrit/Github (pending review in the form of refs/changes/... or pending pull request);
+
+export ONOS_VERSION            ?= 2.2.4
+export TRELLIS_CONTROL_VERSION ?= 3.0.0-SNAPSHOT
+export TRELLIS_T3_VERSION      ?= 3.0.0-SNAPSHOT
+export FABRIC_TOFINO_VERSION   ?= e1cf4551b4ab74bb82a7cecf19d197698ffbc1cb
+export UP4_VERSION             ?= cac4b02ef342a0588bc3e1fcfb8d29fef1c0dfd8
+export KAFKA_ONOS_VERSION      ?= 2.4.0-SNAPSHOT
+export FABRIC_TNA_VERSION      ?= da091c3445f81fc69a67acf5d1e37be715f5c052