elasticsearch returner.

Dependencies:

- official elasticsearch python client
- jsonpickler.

configuration is defined in the master config file:

```yaml
ext_job_cahe: elasticsearch

elasticsearch:
    host: 'some.host.com:9200'
    index: 'salt'
    number_of_shards: 1 (optional)
    number_of_replicas: 3 (optional)
```
Reimplemented 'latest_version()' to fix #12663 and make it more readable + better debug-able.
Added preliminary documentation
correct master settings
add link to elasticsearch client library docs
fixed lint errors
Initial commit of a zookeeper concurrency control module
win_useradd: getting %USERPROFILE% from the registry
Add aliyun for salt cloud
Merge remote-tracking branch 'upstream/develop' into aliyun
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
Remove slang from test states
Fix test=True for states without changes

If no changes are going to be made, result should be True or False, None
is reserved for when changes are going to be made.
PyDSL exception handling

Re-raise rendering errors as our own exception class.
Add verisonadded for mysql_query.py
Use !r formatting instead of double quotes
Fix traceback when syncing custom types

This fixes a traceback which occurs when a rendering error occurs when
the top files are checked before custom types are synced.
Merge pull request #12895 from basepi/mysqlqueryversionadded

Add verisonadded for mysql_query.py
Catch exception in publish when in masterless.
Update tomcat.py