Better mechanism for `with-external-gems`

- use `eval_gemfile` instead of creating a munged combination
- copy `Gemfile.lock` into place if it exists
Avoid extra `bundle exec` in non-`--dump` case