Fixed side-effects caused by passing by reference
Fixed side-effects caused by passing by reference

The Net::SSH::Config::default_files method is supposed to "return an array of locations" to parse by default.

However, it currently returns a **reference** to the actual `@@default_files` instance variable, meaning that any API consumers who `Enumerable#shift`, `pop`, or otherwise modify the returned Array are actually **__modifying the state of the `Net::SSH` library as a whole__**, meaning that subsequent uses cannot use the same array.

I found this because I use `Net::SSH.start` by itself (eg, automagically getting configuration), but ran into problems when I added this block in front, where I'm simply loading the files to find whether the new option `IdentityAgent` is set. (Eg, I'm not otherwise using/`::translate`ing the loaded options)

```ruby
raw_opts = {}
opt_files = Net::SSH::Config.default_files
while (file = opt_files.shift)
  raw_opts = Net::SSH::Config.load(file, some_hostname, raw_opts)
end
identity_agent = raw_opts.fetch("identityagent", nil)

Net::SSH.start(hostname, nil, verbose: :info) do |session|
  # ... do my regular stuff
end
```

After I added that block, the attempted ssh session used the wrong username, etc, as if `#start` was no longer loading the config files.

At first I assumed that `Net::SSH::Config.load` had side effects (documented or otherwise) but I couldn't see any evidence of that in the code.

Imagine my surprise when I found the "pass by reference" problem in `::default_files`...

My fix boiled down to this:

`opt_files = Net::SSH::Config.default_files` -> `opt_files = Net::SSH::Config.default_files.clone`

Hence the PR. I don't think it makes sense for anyone to be able to modify the internal state of Net::SSH...

Feel free to reject this PR, in which case I'll make another one to adjust the docs instead, warning people of the side effects :-)

net-ssh/net-ssh