Add a `Omnibus.root` -> `Omnibus.project_root` alias

This is mainly there for backward compatibility for legacy Omnibus
projects that use the older naming.
yarddoc format fixes
Add a `.yardopts` file and ignore generated `doc` dir
Add a Rakefile for bundler, rspec and yard tasks.
Add `Omnibus.omnibus_software_root` helper

This method is meant to act as the 'one true way' to retrieve the
location of the `omnibus-software` gem if it exists in the gem path. We
also find this using `Gem::Specification#find_all_by_name` which should
work in non-Bundler situations.
make project Rakefile optional; don't shell out to rake

The Rakefile is now optional in all Omnibus projects that are built
using the `omnibus` CLI.

The `omnibus build` command now looks for an optional Omnibus
configuration file at the following locations:

* specified by the user using the `-c|--config` CLI option
* `$PWD/omnibus.rb`

If no valid configuration is found the build is run with the default
configuration (loaded by a call to `Omnibus.configure`). This will allow
a user to do things like have a system-wide Omnibus configuration file
which contains

The default project build Rake task is now invoked directly in the CLI
code which means no more shelling out to run Rake!
Don't CLOBBER install_dir which is hard coded to /opt/chef!

Do CLOBBER package_dir.
Extra require slipped in from another branch
Split apart config loading / processing

Omnibus::Config now extends Mixlib::Config, which simplifies
overriding / customization of the configuration parameters.

Additionally, consumption of configuration information is now
separated from acting upon it, which allows us to act upon it in the
CLI tool more intelligently.

Note: `Omnibus.configure` still exists, but is now deprecated.
Furthermore, it no longer takes a block, which means that it can no
longer be used to override configuration parameters.
Let project_root be configurable

The original `Omnibus.project_root` worked out to the directory the
omnibus CLI tool is invoked from, which may or may not be the same as
the actual project root.
Extract #project_files and #software_files

These are now properly resolved against the project_root.
Update CLI for new configuration process.

A configuration file (if present) is loaded, modified by relevant CLI
options, and then processed to generate the project dependency tree.

The check for the validity of the given path is now deferred until
after the configuration is fully processed, since this is actually a
configuration-dependent check.
Removed Omnibus::NoConfiguration

Not needed anymore with Mixlib::Config-based approach.
Update InvalidS3Configuration message

Updated to reflect new Mixlib::Config-based approach, as well as
giving a nod to better security practices around sensitive S3
information (h/t @danielsdeleo)
Add an `Omnibus::Util` module for utility methods

First methods up are `shellout` and `shellout!`, nice wrappers around
`Mixlib::ShellOut`.
leverage `Omnibus::Util#shellout!` mixin for shelling out
return version of '0.0.0' if git describe parsing fails

Until the first annotated tag has been cut in a repository git describe
fails with the following 128 error:

  fatal: No tags can describe 'SOME_SHA'
[OC-6705] add `omnibus project NAME`

Useful for generating a skeletal projects.
Add `Omnibus.projects` and `Omnibus.project` methods

These helpers aid in common project-related tasks.
add `omnibus clean` command

This command can work at two levels:

* basic clean will remove temporary files generated during the build
  process.
* when the `--purge` option is specified a full clean will be performed
  including removal of the files in the install path AND and
  any generated packages.