Moved git submodule init/update to git pull in dev-helper

dev-helper and dev-installer should not do anything unless told to.
Moved git submodule stuff to the git-pull function.
linktool displays branching previous links

refs #5235

Some links have multiple parents (ie. links that point to them). Updated
display of previous links to show the hierarchy, using indents.  Also
updated insertbefore to work with multiple parents.
Fixed implementation changes in linktool

refs #5235
Removed unused imports in some link task managers

refs #4757
Added FPR v2 way of identifying file format

refs #5575

Instead of running all the identification tools with FITS and selecting
which identification tool's output to use in the Ingest tab, we now run
just the identification tool selected, and no longer have a choice in
the ingest tab.

Client script identifyFileFormat added that runs the selected
script and compare the output against IDRules to determine the
FormatVersion of the file.  Removed the file identification portion of
archivematicaFITs client script.  Also removed the 'select format
identification tool' microservice and all of it's children.
Updated submodule revision.
Cleanup of transcoder code

refs #4757

Removed unused transcoder client modules, and duplicate
transcoderNormalizer.py.  Cleaned up duplicate imports and unused
variables.
DB consistently utf8/utf8_unicode_ci, update DB creation script

refs #5575

Updated DB creation SQL to match changes in fpradmin code.  To match
changes in Django, run manage.py sql fpr and put the output in
src/MCPServer/share/mysql_dev2_fpr_table_create.sql  Split mysql_dev1
into multiple files to make this easier.

Problems creating foreign keys between new FPR tables and existing
tables solved by setting all charsets to utf8 and all collations to
utf8_unicode_ci.

Updated DB creation script to call all the mysql_dev scripts.
More cleaning up LinkTaskManager code

refs #4757

Removing unused imports and variables, code that doesn't do
anything or is unused.
archivematicaClient announces new transcoder rules

refs #5575

Archivematica client doesn't announce old (CommandRelationship based)
transcoder rules, but new (fpr_fprule) rules.  Also updated Django
definition of TaskConfig and MicroServiceChainLink for better print
display and matching SQL better.
Added CSS for FPR admin revision links.

refs #5535
More cleanup of LinkTaskManagers and transcoders

refs #4757

Removing commented out code, unused imports, fixing some print
statements, clarify tuple unpacking, split long and confusing lines
into multiple lines, etc.
Normalization works with FPR v2 API

refs #5575

Updated Normalization code to use the new FPR model, first pass.

Database calls to Commands and CommandRelationships have been replaced
with fpr_fpcommand and fpr_fprule, CommandRelationship has been
replaced with FPRule, CommandClassifications replaced with
fpr_fprule.purpose.  DefaultCommandsForClassifications not yet update.
FPR admin revision updated for related changes.

Misc code cleanup and simplification.
Merge branch 'dev/issue-5575-fpr-mcp-integration' into dev/issue-5535-fpr-integration

refs #5575

Updating MCPServer file identification and normalization to use FPR v2
data models.

File identification is done once in the Transfer tab, and the choice of
what file identification tool is presented in the Transfer tab and used
during Normalization, instead of identification will all the tools and
a choice of which output to use before Normalization.  Removed file
identification code from archivematicaFITS.py, and added
identifyFileFormat.py to replace it.

Normalization uses FPRules to determine what rule to apply, and
FPCommands for the command.  Old CommandRelationships are no longer
registered by the archivematica clients, only FPRules.

All tables use charset of utf8 and collation of utf8_unicode_ci now.
mysql_dev1 database creation script split into several scripts and
called differently from dev-helper

Also, significant cleanup of LinkTaskManagers, removed unused client
scripts, removed commented out and code, cleaned up functionality some.
identifyFileFormat: limit IDRule query to current command

Without this, multiple results could be returned if multiple commands
declare the same output. identifyFileFormat expects a single result.
executeOrRun: accept optional argument parameter

This allows commands run via the executeOrRun functions to accept
additional arguments. If a command is passed with arguments, the
initial command should be passed as a string representing an
executable command on its own, as shlex.split() will not be called on
it.

This also allows launchSubProcess() to accept an array as the first
parameter, in which case it will be passed to subprocess.Popen
unmodified.

Refs #5625.
identifyFileFormat: use arguments instead of interpolating

refs #5625
identifyFileFormat expects IDToolConfig, outputFormat uses FormatVersion

refs #5627, #5653

identifyFileFormat expects %IDCommand% to be the UUID of IDToolConfig,
instead of IDCommand.  This fixes problems where the ReplacementDict wasn't
getting updated when the IDCommand was changed.  #5653

transcoder.outputFormat is now populated with FormatVersion.description,
instead of retyping the description into FPRule.output_file_format. #5627

FPR database creation SQL updated using mysqldump.
Enabled stats tracking for FPRules

refs #5629

Enabled stats tracking for FPRules in transcoder.  Removed it from
linkTaskManagerSplitOnFileIdAndruleset since it appeared to be duplicate.
Cleaned up code with that removal.  Updated table creation SQL for new
columns.
Added watchedDirectory for select file format ID command

refs #5633

Added watchedDirectory for 'Select file format identification command', and
updated chain links to work with that.  Added watchedDirectory to
filesystem.