refactor to catch edge cases, remove repeated code

- Move all the supported YAML file extensions into a constant
- Use helper functions to avoid duplicate code for group/host vars
- Catch and disallow some confusing situations, such as the presence of
  multiple group/host vars files for the same group/host, but with
  different extensions.  For example having both group_vars/all.yml and
  group_vars/all.yaml.
- Catch and report file system permission issues, symlink errors,
  unexpected file system objects
- Trivial performance improvement from making fewer stat system calls
- Restructuring that makes it easy for a following patch to support
  directory recursion
Allow organizing host/group vars in a directory

So instead of having:
 group_vars/production.yml

A user could chose to reorganize to:
 group_vars/production/staff.yml
 group_vars/production/networks.yml
 group_vars/production/dns.yml

(Backwards compatible.)
Add support for bare git reference repos

This adds two parameters to the git module:

  bare (boolean)
    Indicates this is to be a bare repositori

  reference (string)
    Indicates the path or url to the reference repo.
    Check out the "--reference" option in the "git clone"
    man page

Added appropriate tests.
added unique and intersect filters for dealing with lists

Signed-off-by: Brian Coca <briancoca+ansible@gmail.com>
Adding more wait conditions to the wait_for module

Adds a new option to wait_for to wait for a file to exist on the file
system before continuing, optionally takes a search_regex param to match
text in the file.
Check for AWS keys using boto names

- see https://github.com/boto/boto#getting-started-with-boto
Merge pull request #4691 from cg-soft/git-bare-ref-repo-support

Add support for bare git reference repos
Fix git bare test in el6 by adding origin to remote
Fix copyright section in githooks module
Merge pull request #4758 from alanfairless/group-host-var-dirs

Support organizing group and host variables across multiple files in a directory
Merge pull request #4879 from bcoca/unique_intersect

added unique and intersect filters for dealing with lists
Merge pull request #4888 from jarv/jarv/wait_for

Adding more wait conditions to the wait_for module
Merge pull request #4896 from mjschultz/aws-access-keys

Check for AWS keys using boto names
Support to install software on FreeBSD using portinstall.
OpenBSD packages can be installed using 'flavour'. Best example
is vim. It can be installed as vim--no_x11 or vim--gtk2.
Merge pull request #4908 from berenddeboer/portinstall

Support to install software on FreeBSD using portinstall.
Fix docstring and remove redundant parameter value in portinstall module
Merge pull request #4912 from zehome/openbsd_pkg_flavourfix

OpenBSD packages can be installed using 'flavour'