VOL-4874 - Fix local lint target use problems.

scripts/which_deployment_owns_device.sh
---------------------------------------
   * Fix a few shellcheck complaints.

makefiles/lint/robot.mk
-----------------------
   * Update target logic to use && -vs- ;
   * semicolon use can mask errors.

makefiles/lint/python.mk
------------------------
   * Update target logic to use && -vs- ;
   * Removed pylint option --py3k, switch not suppored by newer interpreters.

makefiles/lint.mk
makefiles/lint/shell.mk
-----------------------
   * Added a lint target to invoke shellcheck on sources.

Makefile
--------
   * target:clean modified to remove generated sources.
   * target:gendocs: unique $(LIBDIRS) and replace for loop with a simple mkdir -vp call.
   * cosmetic indentation cleanup.
   * modified vst_venv target to apply patches after virtualenv created.
   * patches address failures caused by python 3.10+ requiring collections.abc
   * Ignore exit status from 310_migration for now to avoid failing other jobs.

patches/lib/python3.10/site-packages/robot/utils/normalizing.py/patch
patches/lib/python3.10/site-packages/robot/utils/robottypes3.py/patch
---------------------------------------------------------------------
   * Attempt to import the new collections.abc module for Mapping and
     friends so python 3.10+ can be supported.
   * Fall back to existing module import supported by python interpreters
     v3.5 <=> v3.9.

patches/python_310_migration.sh
-------------------------------
   * Self contained helper script used to generate and apply python 3.10+ patches.

Followup edits
--------------
   * Added missing license blocks reported by jenkins.
   * Updated lint checking to detect license errors so problems can be fixed prior to checkin.
   * Add set -x debugging, not clear why pyenv patching failed.

Change-Id: I2b8515bb26874eb8b1564bec87353ea0c1485b61
diff --git a/scripts/which_deployment_owns_device.sh b/scripts/which_deployment_owns_device.sh
index c23961d..55b7a6f 100755
--- a/scripts/which_deployment_owns_device.sh
+++ b/scripts/which_deployment_owns_device.sh
@@ -20,9 +20,9 @@
 for DEPLOY in $(kubectl -n voltha get deploy -o 'jsonpath={.items[*].metadata.name}'); do
     if [[ "$DEPLOY" =~ voltha-rw-core-.* ]]; then
         FOUND=$(kubectl -n voltha logs "deploy/$DEPLOY" 2>/dev/null | grep "$DEVICE_ID" | grep -i ownedbyme | tail -1)
-        if [ ! -z "$FOUND" ]; then
+        if [ -n "$FOUND" ]; then
             OWNED=$(echo "$FOUND" | grep '"owned":true')
-            if [ ! -z "$OWNED" ]; then
+            if [ -n "$OWNED" ]; then
                 CUR_DATE=$(echo "$OWNED" | jq -r .ts)
                 CUR_DEPLOY=$DEPLOY
                 if [ -z "$BEST_DEPLOY" ]; then