Some summary of discussion with @gnufied.

- we should try to use "standard" ways:
  - use `open` on MacOS
  - use `x-www-browser` (if `ENV['DISPLAY']` defined, `www-browser` otherwise) on Linux
- if standard way is not available, try use `BROWSER` environment variable

I see it something like this:

``` ruby
browser = [
  ENV['BUNDLER_BROWSER'],
  ENV['BROWSER'],
  Bundler.default_browser
].compact.select{ |p| Bundler.which p }
```

If browser is not found, propose to add `BUNDLER_BROWSER` variable with the browser user wants to use in future and show URL he can copy-paste right now.

On Linux it's vital to differ `x-www-browser` from `www-browser` as on virtual terminal first will fail.

Alternatively I propose to try something like this:

``` ruby
def browser
  bin = ENV['BUNDLER_BROWSER']

  unless bin && Bundler.which(bin)
    bin = [ENV['BROWSER'], 'safari', 'firefox', 'google-chrome'].compact{ |p| Bundler.which p }
    Bundler.ui.warn "No $BUNDLER_BROWSER environment variable set. Using `#{bin}`."
  end

  unless bin
    Bundler.ui.error "... message that user should set BUNDLER_BROWSER environment ..."
  end
  
  bin
end
```