Use install instead of installmissing if Chocolatey >= 0.9.8.24

X-ref: #13980

This also adds a chocolatey.chocolatey_version function and does some
DRY cleanup so that the error message and exception are raised in
_find_chocolatey() instead of in 6-8 different places.
added get_resource_path and get_resource_string
renamed get_resource_string to get_resource_content
show_timeouts, new default
Add cygwin package installation

Currently only hadles adding packages. Does not remove packages. It is
setup to update packages any time it is run, but there is no independent
update functionality.
Curently no unit/integration testing is done. I haven't wrapped my head
around the way the mocking and stuff is done yet.
Added update and uninstall functions

Should be able to remove and update things now. Also doesn't always
update when installing anymore. Update now only called via
salt['cyg.update']()
Added update and uninstall functions

Should be able to remove and update things now. Also doesn't always
update when installing anymore. Update now only called via
salt['cyg.update']()
Merge branch 'addCygwin' of github.com:s7726/salt into addCygwin
Installation is now working

usage:

cyg.installed:
    - names:
      - dos2unix
      - ssh
      - vim
      - tmux

Some of you may notice that 'ssh' is not a cygwin package, 'openssh' is. Currently it is reported as successfully installed. My next step is to check the list of named packages against the available packages and return false if they don't exist.

Have not tested package removal.
Now checks if the package name is valid

Currently fetches the entire package listing for each check. Next step
is to cache the packages for each session. I read about one of the
__var__'s that salt has that does caching like that.
Cache the package listing per run
Package removal is working
Added ability to update all installed packages

Cygwin does not appear to have a way to just upate individual packages.
Also probably not a good idea since it can all be pretty tightly
coupled.
Pep8'ified
Some more style fixes, swap before and after diff

Only functional change is to fix the order of the diff. It is correct
now.
made copying the environment safe
Document seco range

Per request in #15093
Have CLI check job cache

Fixes an issue wherein returns might be missing from the CLI because of
a race condition between find_job and the timeout.
Remove **kwargs from pkg.upgrade functions

Fixes #14976
win: use `subprocess.list2cmdline` to sanitize user input

The `win_services` module uses `string.format` to build commands that
get run on the shell, performing some simple defenses against bad user
input.

Most look like `'net stop "{0}"'.format(name)`, where `name` comes
from user input, using double quotes to permit names containing
spaces.

`subprocess.list2cmdline` solves the escaping problem more robustly.