ethtool: Add bash-completion script

To aid users constructing a valid ethtool invocation, create a
[bash-completion] script to provide [programmable completion] of ethtool
arguments.  It supports all current command options.

The script is named shell-completion/bash/ethtool, similar to [kmod],
and installed to `pkg-config --variable=completionsdir bash-completion`
(with $prefix replaced by --prefix of ./configure and fallback to
$datadir/bash-completion/completions) by default.  This can be disabled
by passing --without-bash-completion-dir or changed by passing
--with-bash-completion-dir=$anypath to ./configure.  It requires
pkg-config 0.18 or later to be installed on the build system which runs
aclocal (for the PKG_PROG_PKG_CONFIG m4 macro).

To install the script manually for the current user, copy or link
shell-completion/bash to $BASH_COMPLETION_USER_DIR/completions
(default $XDG_DATA_HOME/bash-completion/completions
(default ~/.local/share/bash-completion/completions)).
To install system-wide, copy shell-completion/bash to completionsdir
from pkg-config (default /usr/share/bash-completion/completions)
discussed above.  Restarting bash may be necessary to pick up changes to
the script (if a previous version had already been loaded).

Note: In [scop/bash-completion#289] the bash-completion maintainer
suggested shipping this completion with ethtool rather than
bash-completion, due to assumptions about the ethtool command-line
format made by the script.  That pull request also contains an extensive
test suite in Python which is not included in this commit, but may be
ported to a format suitable for inclusion if there is sufficient
interest and agreement about how to achieve that.

[bash-completion]: https://github.com/scop/bash-completion
[programmable completion]: https://www.gnu.org/software/bash/manual/html_node/Programmable-Completion.html
[kmod]: https://git.kernel.org/pub/scm/utils/kernel/kmod/kmod.git/tree/
[scop/bash-completion#289]: https://github.com/scop/bash-completion/pull/289

Signed-off-by: Kevin Locke <kevin@kevinlocke.name>
Reviewed-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
3 files changed