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.
Consider adding

    static final NoAuthCredentials NONE = new NoAuthCredentials();

and making the `NoAuthCredentials` `class` package protected (drop `public`). It may not be used enough to warrant having a `static` field hanging around though, but I liked what you did with the original `BasicAuthCredentials` and `EMPTY` before changing it a bit.