Robustify several pieces

* I've reorganised the codebase so that the `gem` argument to all methods is
  no longer available.  Despite being a non-backwards-compatible change, I
  haven't bumped the major version because that feature would never have
  worked for anything other than GVB itself, anyway.

* If a caller_file can't be found in a gem, we now raise VersionUnobtainable,
  because things are totally screwed.

* We rescue nil on File.dirname(caller_file) because we can fallback to
  File.pwd and continue in a semi-sane fashion (this should only be useful
  for GVB development itself, though).

* Only define GVB if it isn't already defined (avoids problems with somehow
  requiring the same file multiple times).
Look for callers in gem binaries, too