Enable negated patterns

A host pattern of the form '!foo' by itself does not work, but
'all:!foo' does. If the first pattern is a negation, this commit
automatically prepends 'all'.

Signed-off-by: martin f. krafft <madduck@madduck.net>
Remove shebang line

The env-setup script is not intended to be run directly, so it does not
need a shebang line, which might even create the wrong expectations.

Signed-off-by: martin f. krafft <madduck@madduck.net>
Replace external command with shell construct

dirname/basename do not need an external process, shell variable
expansion can be made to do the same a bit faster.

Signed-off-by: martin f. krafft <madduck@madduck.net>
Quote variables in shell script

In case paths contain spaces, it's better to consistently quote
variables, and to use $() instead of `` for external invocations.

Signed-off-by: martin f. krafft <madduck@madduck.net>
Remove bashisms, replace with POSIX constructs

This replaces double conditional brackets with single ones and gets ris
of bashisms, so that the tool should be sourcable from any POSIX shell.

Constructs like [ $foo = "$bar"* ] yield filesystem-globbing behaviour
according to POSIX. A compliant way is to use case statements.

Signed-off-by: martin f. krafft <madduck@madduck.net>
added force parameter to symlink invocation, in order to force the creation in case of already existing destination with the type of 'file'
added possibility to force symlinks to none-existent destination (which might appear later)
Updated documentaion for the file module
Fixed typo
Reference major_release, not major_version
Add submodule support to git module

This does two things:
* add --recursive option to git clone command in clone().  This will
  initialize all submodules when cloning a remote repository.
* Add submodule_update() and call that from fetch().  submodule_update()
  calls two git commands iff the file .gitmodules exists in the
  repository:
  * 'git submodule sync' - synchronizes the submodules' remote URL
    configuration setting to the value in .gitmodules.
  * 'git submodule update --init --recursive' - initialize and update
    registered submodules to the commit specified in the index of the
    containing repository.

If a repository was cloned without --recursive, submodule_update() will
ensure that the submodules are initialized and updated.
Added flexible filename handling for main files

tasks, handlers, and vars main files can now be any of main, main.yml, or main.yaml
Add linode cloud provider.
Update documentation
Fix last bugs, complete all tests.
Consistent wait_timeout between doc and module
Don't turn on sudo for all tasks when setting the sudo_user or ask_sudo_pass,
Improve error messages on missing required variables.
fix wrong argument_spec in digital_ocean module

as 'required' and 'default' are mutually exclusive removed 'required' in preference of 'default'
Let update-rc.d set changed flag properly

When update-rc.d is used to enable/disable service, the changed flag was
always true (see #2189). This commit fixes that.

Signed-off-by: martin f. krafft <madduck@madduck.net>