Reimplemented 'latest_version()' to fix #12663 and make it more readable + better debug-able.
Update to tomcat.py

-Added "force" (default false) option commensurate with force option in salt.modules.tomcat.deploy_war to allow forced deployment of a .war even if the version strings match.  
-Forced successful deploy comment to be a string instead of dict to compensate for https://github.com/saltstack/salt/issues/12840
Update tomcat.py
file.directory: fix cleaning directory symlinks

With a file.directory state, using the 'clean' directive, some symlinks
could not be removed, raising exception:
  OSError: Cannot call rmtree on a symbolic link

The reason is that valid symlinks for directories are returned
by 'os.walk' as directories.

This commit checks if directories are, in fact, symlinks, and treats them
as simple files.
Fix traceback due to unavailable module

The class defined in this state references a module that is not
installed. This commit moves the class definition with the try/except
where the deps it requires are loaded.
Document the options not allowed in the
Document the options that should not be used in the tar_options
parameter. Let the command tar to fail if the user dosn't use the right
options like --file, -a, -x, etc.

It doesn't worth the effort to put a logic to detect forbidden options
in the module.

The current code of removing 'f' breaks long options that have 'f', like
--transform.
disable confusing [ERROR] printing on retcode!=0 where not relevant
Properly use try-finally for file handle management
Fix indentation of class
Don't stacktrace if we can't write a job cache.

Closes #12978
lint fixes
Optimize sync_all

This commit stores the environments read by reading the top file in
__context__ so that the top file does not need to be read once for each
sync doing in salt.modules.saltutil.sync_all().
Sync custom types before executing highstate
Truncate id hash to 10 chars

This helps avoid the sock path being longer than the max length allowed
by the kernel. See the following comment for more information:

https://github.com/saltstack/salt/issues/12172#issuecomment-43903643
Update event tests to use truncated hash
#12989 Fix for '3 arguments (4 given)' error.
Fix condition to support non-string values.
Merge pull request #12995 from JasonSwindle/patch-1

#12989 Fix for '3 arguments (4 given)' error.
Merge pull request #12996 from zeezooz/iptables_integer_values

Fix condition to support non-string values.