Improve Linux network facts incl. bridges, ppp, wwan devices

This patch adds all interfaces (even inactive ones) to setup output.
Added 'validate' feature to copy and template modules, now you can add a check to force copy to fail if the check fails.
had to add entry in file for it to accept as a option even though file itself ignores it.
Signed-off-by: Brian Coca <briancoca+dev@gmail.com>
allow URL spec for install
When saving to dest, check if we get redirected, and use the new
location header to set the dest file name if we only provided a
target dir. Only save if dest not modified.
apt module: part rewrite of the upgrade logic, consistently checking
the executable paths, adding 'safe' as an alias to yes, and adding
'full' to allow aptitude full-upgrade as an alternative to apt-get
dist-upgrade
add default=yes in upgrade argument spec
package and upgrade are not mutually exclusive, but when both were set, upgrade didn't happen
New module 'set_fact' to define host facts

This module allows you to set host facts (or export play variables to the playbook scope if you fancy that).

The module also accepts complex arguments.

```yaml
 - action: set_fact fact="something" global_fact="${local_var}"'
 - action: set_fact
   args:
      fact: something
      global_fact: ${local_var}
```
Merge pull request #2720 from base10/devel

Small spelling correction to authorized_key module docs
Showcase the new-style lookup plugin access in the authorized_key docs rather than the old-style $FILE
Fixup authorized key documentation formatting
Remove an extra space in the module execution line if no environment was set.
Typo in example, extra space breaks playbook.
Merge pull request #2725 from jtsoi/patch-1

Typo in example, extra space breaks playbook.
Ignore inventory config files when using an inventory directory.
Don't send unicode instances to the selinux module

This fixes #2632.  Briefly: specifying things like paths using complex
args in a playbook will make the objects unicode instances.  The selinux
module does not accept unicode instances for its char * arguments; it
wants str instances.

Per mpdehaan's comment on #2632 I just went ahead and converted all
paths to UTF-8.  I don't know if it would be better to do something like
converting to locale.getpreferredencoding(), but I factored all the
conversions out into new method _to_filesystem_str, so there's only one
place that needs to be changed in the future.
Instantiate callback plugins only once so we can set play/task objects on them and they'll stick.
Showcase the new-style lookup plugin access in the authorized_key docs rather than the old-style $FILE
Fixup authorized key documentation formatting
Ignore inventory config files when using an inventory directory.