adding the ability to change redis configuration
Fixes #5819: Added --executables to gem uninstall command.
ec2_vol supports name / id to mount volume on instance

* volume_size no longer required if name/id are provided
* id is volume-id
* name is volume Name tag
* special checking is provided
further compatibility with older versions of python-apt (#5853)
adding -K flag for ask-sudo-pass to ansible-pull
Add idempotency to mongodb_user module
Add option to enable the sysctl -e option
Reworked PR to avoid repeating the command
ansible-pull support for -e (--extra-vars) option (same as ansible-playbook) #5707
Revising method for parsing ranges from --limit subsets

Also added a new test (test_subset_range) for future validation.

Fixes #4620
fixes as per feedback
changes names to name in example
Module to create EC2 snapshots

Two methods of creating a snapshot
* use volume_id
* use device_name and instance_id

The latter is more useful with inventory
make --list-tasks honor --limit
fixed main() issue created in prev fix, now values are empty string if they were None

Signed-off-by: Brian Coca <briancoca+ansible@gmail.com>
ec2.py: Make sure ec2_placement gets handled correctly

ec2_placement was missing from the inventory variables ec2.py was
producing.  Make sure that gets properly included rather than ignored.
Pick up default EC2 region from boto.config

This doesn't account for boto configs where e.g. RDS has one
default region and EC2 another - all will default to `ec2_region_name`.

However, this is just handy to allow an easy site wide default
region if existing configuration already relies on it.

Modules can be improved to mention this in the documentation and
turn off required=True where needed. But it works with `ec2`
and `ec2_vol` without change.
Make sure requested version tag gets downloaded

There is a subtle bug in how the git module currently works. If the
version you request is a tag name, and you've already got the repo
cloned, and the tag name is a new tag, but refers to the already checked
out working copy, the git module would exit early without change. This
is bad as it means the new tag ref was not fetched and could not be used
in later tasks.

This change will check if the version is a remote tag, and if the tag
doesn't exist locally. If that is true, it'll do a fetch.

The activity could still be seen as not a change, because the working
copy won't be updated, if the new tag refers to the already checked out
copy, but that's not different than before and can be fixed as a more
comprehensive overhaul of tracking change in the git module.
NPM install latest made more effecient

`npm install` is smart enough to only update updated modules. Checking for `outdated` and running `update` repeats the same process 2x.
outdated needed to see set `changed`