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
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
Merge pull request #12991 from MTecknology/develop

Added more information about how salt-syndic works.
#12989 Fix for '3 arguments (4 given)' error.
Fix condition to support non-string values.
Modified skip flag logic to skip instead of filter.
Defaulted skipPresent to false, since it causes legitimate patches to be missed.
Fixed output of install_updates.
Fixed misc. code problems.
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.