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
Added preliminary documentation
filter on profile & providers if any
Make salt.states.target behave correctly with list of targets
Detect lo as a valid loopback interface.

Closes #12811
Didn't remove debugging. Oops.
Support returners in scheduler.

Closes #8367
correct master settings
add link to elasticsearch client library docs
Refactor new yum reinstall support

This cleans up the new reinstall support that was merged yesterday.
Unit tests for aliases module
Fix Puppet module to work on Windows with community or enterprise Puppet packages installed.
Fix Puppet module to work on Windows with community or enterprise Puppet packages installed.
Pylint fixes
Merge pull request #12834 from internetstaff/develop

Fix Puppet module to work on Windows
Merge pull request #12825 from cachedout/8367

Support returners in scheduler.
Merge pull request #12821 from rallytime/list_aliases

Make salt.states.target behave correctly with list of targets
Merge pull request #12823 from cachedout/12811

Detect lo as a valid loopback interface.
Merge pull request #12829 from terminalmage/yumpkg-reinstall

Refactor new yum reinstall support