files/file: add support for symbolic permission modes
Added support for setting up maintenance windows of under an hour.
Added support for using tokens instead of usernames and passwords.
Added 'version_added' attributes for new fields.
Also added missing fields to documentation and added some more examples.
inventory directory parser: add hosts to group non-recursively
inventory directory parser: add groups to parent_groups non-recursively
inventory directory parser: add host to group only once
inventory group: add groups to parent_groups only once
inventory groups: make sure group.depth is updated on all grandchildren
inventory ini parser: do not add all the groups to *all* group

but only those with lowest depth, so we keep a proper tree structure
inventory script parser: do not add all the groups to *all* group
Inventory: raise error when adding a group that already exists.

The parsers check if a group already exists.
InventoryDir: refactor logic

Make sure all hosts and groups are unique objects
and that those are referenced uniquely everywhere.
Also fixes test_dir_inventory unit tests which were broken after previous
patches.

	modified:   lib/ansible/inventory/dir.py
Refactor vars_plugins (host/group_vars)

Split out parsing of vars files to per host and per group
parsing, instead of reparsing all groups for each host. This enhances
performance.

Extend vars_plugins' API with two new methods:
* get host variables: only parses host_vars
* get group variables: only parses group_vars for specific group
The initial run method is still used for backward compatibility.

Parse all vars_plugins at inventory initialisation, instead of
per host when touched first by runner. Here we can also loop through
all groups once easily, then parse them.
This also centralizes all parsing in the inventory constructor.

	modified:   bin/ansible
	modified:   bin/ansible-playbook
	modified:   lib/ansible/inventory/__init__.py
	modified:   lib/ansible/inventory/vars_plugins/group_vars.py
Introduce noop vars plugin.

In preparation to move the group_vars plugin code into core.

	new file:   lib/ansible/inventory/vars_plugins/noop.py
Move inventory.set_playbook_basedir from ansible-playbook to playbook constructor
Move group/host_vars parsing into core inventory

	modified:   lib/ansible/inventory/__init__.py
	deleted:    lib/ansible/inventory/vars_plugins/group_vars.py
	modified:   lib/ansible/utils/__init__.py
performance optimisation in hash merge logic

rewrite deepcopy in util.merge_hash and just iterate
on an inventory with 500 groups and 800 hosts this brings back the
inventory initialisation from 13s to 3s (with hash_behaviour=merge)
Make pip dry run work better for the common case

This change allows the pip module to figure out if something needs to be done during
a dry run using 'pip freeze'. This is implemented for the most basic case: name,
version and state=(present|absent). In other cases it will fall back to the old
behavior.
EC2 inventory toggle to exclude/include RDS instances.
Do not filter out RDS instances by default or in INI file to avoid changing current behaviour.