Cleanup remaining Ruby warnings

*  Cleanup method redefined warnings

     These methods are defined via some metaprogramming earlier in the class. Since
     they are also defined by the same mechanism in the pry_class file, I've chosen
     to undef them prior to defining a new version. An alternative would be to
     remove these from the `Pry::Config::Convenience::SHORTCUTS` array and define
     them manually where necessary.

* Cleanup private attribute? warning

     private `attr_*` methods raise a Ruby warning. Instead, just define a
     simple reader method.

* Clean `File.exists?` deprecation warning

    This API has been deprecated in Ruby 2.1, so use the `File.exist?` API.

* Cleanup * (splat) interpreted as argument prefix warning

    The splat was a bit ambiguous in these cases, resulting in a Ruby warning.
    Adding parens makes it explicit and silences the warning.

* Cleanup method redefined warning for grep

    Since we define a "reader" method, this is really an `attr_writer`.

* Cleanup unused local var warning

    We're not using the `ext` local variable, so just ignore it by taking the
    first element from the split - the filename.