Having a small surface for a public API is one of my goals with Berkshelf. Splitting things into separate classes is an awesome thing and makes perfect sense, but the reason they started out in `Berkshelf::Berksfile` is because you're interacting with a single file, the Berksfile, when you perform operations like `install` or `update`.

It's easier to have this one module or class to work with in another piece of work. You basically need to do nothing but:
```ruby
Berkshelf::Berksfile.from_file('~/path').install
```

Arguably this could be moved to a module function on `Berkshelf`:
```ruby
Berkshelf.install('path/to/Berksfile', options)
```