states.iptables support custom rule filename to save
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)
```
normalized keep data so use uid
Reimplemented 'latest_version()' to fix #12663 and make it more readable + better debug-able.
Adds support for OrderedDicts in jinja templates.
Adds support for OrderedDicts in jinja templates.
Changed OrderedDict provider to salt.utils.odict for backwards compat with py2.6
Removes unnecessary collections import.
Added preliminary documentation
Fixed incorrect documentation on the master/client config functions

Fleshed out the function docstrings and pulled those into the Python API
docs.
Reorganized the Python API docs to be more Python-centric
Allow Debian and Red Hat systems to be renamed
Return proper results for 'test=True'
Merge pull request #12805 from tankywoo/develop

states.iptables support custom rule filename to save
Typo (successfull → successful)
Merge pull request #12814 from eliasp/patch-1

Typo (successfull → successful)
Heavy linting of docker module and re-do docker tests.
Fixing lint errors.

Re-introduced some kwargs and args there were here originally.
These will require some additional refactoring to fully remove.
Merge pull request #12800 from eliasp/states-rdp_correct-test-support

Return proper results for 'test=True'
Merge pull request #12768 from spsoit/adds_ordereddict_to_jinja

Adds support for OrderedDicts in jinja templates.