Ensure plugin_loader.all() only loads one instance

by ensuring all basedirs, plugin paths and extra
paths are handled as absolute paths and are checked
to not add any doubles.

This fixes the corner case where e.g. the user has
an additional plugin path configured to a dir
relative to his playbooks or inventory location,
which also matches the  _plugin subdir relative to
one of the basedirs in the play.

For most plugins this doesn't show as an obvious issue
except for callback_plugins, which might fire more
than once. Other plugins (inventory and template
plugins) might unnecessarily be ran twice.

e.g. ansible.cfg has
callback_plugins   = ./plays/callback_plugins
and plays/ contains a playbook file:
.
├── ansible.cfg
├── inventory
└── plays
    ├── callback_plugins
    │   └── timestamp.py
    └── site.yml

modified:   lib/ansible/utils/plugins.py
fix flattened plugin name in changelog
Increase default socket timeout to 5 minutes
Second Attempt: Ensure duplicate roles are not loaded in the case of a missing meta/main.yml file.
Merge branch 'doublecallback' of https://github.com/sergevanginderachter/ansible into sergevanginderachter-doublecallback
Merge branch 'devel-duplicates2' of https://github.com/smoothify/ansible into smoothify-devel-duplicates2
Minor fix to dependency dupe patch
Adding hostvars to injected variables in accelerate ssh runner

Also some minor cleanup of some fb* variables and functions, which
were remnants of the old fireball2 name

Fixes #4021
Make sure the accelerated port is set to a sane value
Merge pull request #4015 from sergevanginderachter/changeflatlog

fix flattened plugin name in changelog
Merge branch 'devel' into local