Add basic authentication authentication for plugin manager

The plugin downloader which is invoked by the plugin command line does not support downloading the plugin from a URL which is secured using basic auth.

Use Case
-------

In the continuous integration process if we want to install a plugin where the plugin artifact is available on the CI server which is restricted with basic auth this is not possible.

Workaround
----------

Download using wget passing auth details and use the elasticsearch plugin command line passing the *file* url instead of *http* url

Good to have
-----------

Plugin command line to have options to take in basic auth credentials and pass it on to the downloader.

Thanks to @katta for the original PR!

Closes #2550.
`instanceof` implies a `!= null` check.

Ignoring that, if it is not `null` and it is _not_ a `BasicAuthCredentials` (or `EmptyAuthCredentials`), then consider throwing an exception.

```java
if (authCredentials instanceof BasicAuthCredentials) {
   // same
}
else if (authCredentials != null && !(authCredentials instanceof EmptyAuthCredentials)) {
  throw new ElasticsearchIllegalArgumentException("Unknown authorization credentials: " + authCredentials.getClass().getName());
}