Introduce command 'puppetdb' as a sub-command dispatcher

This patch includes a new base tool named 'puppetdb' thats job for now is
to accept sub-commands and arguments and execute their equivalent
puppetdb-<sub-command> command (if it exists).

This modifies all documentation to use the new syntax, and all acceptance
tests as well.

Signed-off-by: Ken Barber <ken@bob.sh>
Move sub-commands to libexec dir out of path

This aligns the behaviour with git, so that sub-commands belong in their own
libexec dir outside of the normal PATH of execution.

Legacy commands are left in their original path locations, but replaced with
a wrapper script that returns a warning and executes the new sub-command for
the user. This provides us with a way to eventually remove these command
place-holders when we are ready to remove the legacy hyphenated subcommands.

Signed-off-by: Ken Barber <ken@bob.sh>
Include legacy sub-command acceptance test

This patch provides a test to ensure legacy sub-commands are still working and
returning sufficient deprecation warnings.

Signed-off-by: Ken Barber <ken@bob.sh>
Test to ensure the puppetdb command list all existing sub-commands

When running `puppetdb` on its own, it should list all available sub-commands
in its libexecdir. This test ensures that happens.

Signed-off-by: Ken Barber <ken@bob.sh>
Change regex for legacy subcommand warning test

Signed-off-by: Ken Barber <ken@bob.sh>
Improvements to puppetdb and legacy handling

* Reduce execution of external commands in shell scripts
* Use /usr/libexec for suse, darwin and bsd also
* Make rake install task more DRY for puppetdb-legacy and sub-command copying

Signed-off-by: Ken Barber <ken@bob.sh>
Test on file presence, not execution

The error message if the file is not executable later on is already quite good
and trying to test all files beforehand is cumbersome.

Signed-off-by: Ken Barber <ken@bob.sh>