Lockfile management and DEBUG flags

- Fixes #274

This PR creates and obeys a lockfile written out via JSON.

Major changes include:
- `Lockfile` is now a first-class citizen
- `Berskfile#install` and `Berksfile#update` have been deprecated in favor of `Installer.install` and `Updater.update`
- A new `Command` superclass has been added

The unit tests are failing for some bizarre reason. If I run each test individually, they pass, but the group fails. I can't trace down the issue. Specifically, if `cookbook_generator_spec` and `init_generator_spec` are run at the same time, the tests fail. I think it's something with a race condition on the FS, but I haven't been able to track it down.

In any event, this PR makes Berkshelf behave very similar to bundler and (hopefully) makes working in teams easier.

- - -

You'll also notice [here](https://github.com/RiotGames/berkshelf/pull/298/files#L4R9) there's now a flag developers can specify to make Berkshelf more chatty when developing.