Refactor gem logic into BundlerWrapper

gem_is_bundled?("thin") => bundler.has_gem?("thin")

This reduces the surface area of the LanguagePack and keeps the internals of the `bundler` object lock file less exposed.
Refactor has_windows_gemfile_lock? to bundler

Hide the internals of the Gemfile lock parser from LanguagePack
Faster `gem_version`

Implement `bundler.gem_version` to be constant time lookup using a hash instead of scanning with a detect.

Checking for Gemfile.lock is redundant since we have a `NoLockfile` language pack that detects this before any other packs can be run.

Reduce the Language Pack footprint so it knows less about the internals of the lockfile parser
Update to use new class
Remove un-needed Gemfile.lock check
add bundler specs for windows Gemfile detect