Refactor project loading

This commit permits loading software from more than one gem, as well as loading software from multiple paths on disk.

The user can now specify a list of `software_gems` from which to load software definitions from:

```ruby
# config.rb
software_gems %w(my-company-omnibus-software omnibus-software)
```

The user may also specify local paths on disk:

```ruby
# config.rb
local_software_dirs %w(/path/to/software /other/path/to/software)
```

For all of these paths, **order matters**, so it is possible to depend on local software version while still retaining a remote software repo. In the above example, Omnibus will search for a software definition like this:


```text
(local)/config/software/foo.rb
/path/to/software/config/software/foo.rb
/other/path/to/software/config/software/foo.rb
/Users/sethvargo/.gems/.../my-comany-omnibus-software/config/software/foo.rb
/Users/sethvargo/.gems/.../omnibus-software/config/software/foo.rb
```

The first instance of `foo.rb` that is encountered is used.

This PR also paves the way for only loading required project/software definitions.

/cc @opscode/release-engineers