Schneems/bundle wrapper refactor

Refactor functionality into `BundlerWrapper`

- Move `LanguagePack::Ruby.gem_version('rack')` => `bundler.gem_version('rack')`, now constant time lookup
- Move `LanguagePack::Ruby#has_windows_gemfile_lock?` => `bundler.windows_gemfile_lock?`
- Don't shell out to get bundler version (0.3 seconds saved)
- Remove duplicate Gemfile.lock checks since `NoLockfile` handles these

General logic is to remove un-needed interfaces from the LanguagePack since any helper methods are inherited to all packs. Instead group logic inside of specialized  classes. It makes sense for bundler to know everything about which gems are bundled and their versions. The language pack should know nothing of the lockfile parser or how it works. This also buys us a marginal speed increase.