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
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
Update tomcat.py
Refine aliyun codes according to review comments. The create method
should use bootstrap utils.
pylint coding format
Add generate_password to shadow module
Merge pull request #12888 from crook/aliyun

Add Aliyun provider for salt-cloud
Merge pull request #12909 from s0undt3ch/develop

The helper method is now released
Better, but it now has retries and sleeps
Add some comments
Add algorithm argument to get_hash
Use salt.utils.pycrypt to generate hashed password