WIP: (PDB-1034) Ezbake changes to get PDB source based builds working

This involves a rework of the ezbake_utils to provide more capability to fully
install PuppetDB using these helpers.

* In general, the main API for install_from_ezbake has been kept as it is, but
  some arguments are now optional for convenienence
* We now do the lein install process, but using a local maven repository to
  avoid collision with other projects running on the same host.
* install_termini_from_ezbake now added to install that component
* The make interface on ezbake has been cleaned up somewhat, so reduce the
  amount of extra work the helper has to do. This patch reflects those changes.
* Validate for support up front, this makes the tests easier and the failure
  more centralized.
* Automated the retrieval of project name and version if not provided to the
  helpers. This suits the case where a project is a singleton as opposed to
  a composition.
* ezbake_local_cmd has been added to generalize this kind of system invocation
  and simplify testing.
* ezbake_make generalizes the way we invoke make, and simplifies testing.
* install_ezbake_tarball_on_host has been created to generalize this step for
  the termini and service based installations to re-use. Its idempotent, in
  that it checks to ensure its not already installed.
* conditionally_clone was modified to support being passed a branch if required,
  so in the future we can simplify working on a development branch.
* Lots of yarddoc cleanups
* Full rspec coverage

Signed-off-by: Ken Barber <ken@bob.sh>
Yes I did, and yes I was mindful of generalizing something like this - specifically I looked at how scp was logging and running things, but I couldn't find anything very generic to re-use today, so I adopted a similar style at least.

However ... in its current form its no where near good enough to generalize for every use case. Its barely scratching the surface of what is needed by most consumers, the usage of system isn't a great idea (things like for example systemu add more value here) and to integrate it would touch other parts of the code I don't fully understand. So while I think its a great idea, I'm not really that keen on doing it as part of this patch. I've worked on command wrappers like this in the past, and I know how fragile and fiddly they can be to develop once they start getting generally used (take a look at the one in facter, thats an interesting and hilarious example: https://github.com/puppetlabs/facter/blob/master/lib/facter/core/execution.rb). Also, once its public API, it can't change easily.

Perhaps better to fork this suggestion into another ticket and use this use-case as 1 example of many to cut over, if this is deemed something worthwhile to do. That way you catch all the use-cases and the design of such a method becomes a bit more engineered.