Adding support for ephemeral ports
allow KeyManager to recover from incompatible agents.

This is for example a problem with Vagrant on Windows: https://github.com/mitchellh/vagrant/issues/1455
Fix "ConnectionError" typo
Ensure the connection closes even on exception

In case the block given to Net::SSH.start
throws an exception, make sure that we still
close the connection.
Don't close the connection it's already closed
Tests for close conn on exception
Assert that the return value from ssh block is returned
Add a failing tests for options in pub keys.

Current code explicitly expects exactly 2 fields, which is not correct.

Added tests which have options (at the start) and/or comment (at the
end) to check that we work in all possible cases.
Fix the bug in keys with comments.

Do this by iterating through the fields until finding the key type, and
then using the next field. This is the most bullet proof method that I can think of,
but this code is also fragile about future new key formats now :(
Don't use ssh-agent if :keys_only is true (fixes net-ssh/net-ssh#137)
Support %r in ProxyCommand configuration in ssh_config files
as defined in OpenSSH.
added default that match openssh ssh_config defaults
added commenting
fixed issue with array munging
removed debug messages
updated tests to match the default of not allowing hostbased auth
Restore empty hash behavior for loading nonexistent files
Let auth methods be added or removed, and ensure there are no duplicates
Clone default auth methods to avoid modifying defaults
Add support for ChallengeResponseAuthentication keyboard-interactive
Fix session test to work with new default auth_methods
Add config tests for auth parsing
Merge pull request #129 from ecki/patch-1

allow KeyManager to recover from incompatible agents.