Selectively load softwares and projects

:warning: :construction: POC

This is a proof-of-concept of what selective-loading project and software definitions would look like. It includes breaking changes to the API, so it will not be present in Omnibus 3. 

The tests will also fail, because I did not touch them. I am looking or some preliminary feedback on the implementation. 

Preliminary benchmarks:

```text
# Current
$ bundle exec omnibus build hamlet -l debug
0.97s user 0.43s system 69% cpu 2.008 total

# With patch
$ bundle exec omnibus build hamlet -l debug
0.90s user 0.33s system 73% cpu 1.684 total
```

It seems we are consistently shaving ~0.5s. However, when there are a lot of software and project definitions (omnibus-chef):

```text
# Current
$ bundle exec omnibus list
3.21s user 0.75s system 88% cpu 4.455 total

# With patch
$ bundle exec omnibus list
0.84s user 0.31s system 75% cpu 1.537 total
```

In this instance, we can see a very significant gain in speed.

/cc @lamont-granquist @danielsdeleo @opscode/release-engineers 
Should this be `debug` or `info`?