Remove raw session accessor from `running_session`.
Remove need for session parameter in knownhost class constructors.

The session is only used for memory allocation.  It doesn't need to be connected to anything so we just create a new session internally.  Saves the caller having to find a session from somewhere when they might not otherwise be using one.
Make `knownhost_iterator` constructors private.

When `knownhost_iterator` required a session or hosts collection (i.e. non-end), it must be created via `knownhost_collection`.  Therefore we make the constructors private and declare `knownhost_collection` a friend so that it can call them.
Removed public accessor to raw session pointer from `ssh::session`.

The class that needs it, `sftp_channel` is now granted sole access to it via the Attorney-Client idiom.

This improved encapsulation is one small step to getting control of where references to the session are held, which we will need eventually to do thread-safe session locking.
Removed `#pragma once` declarations.

They aren't portable and aren't needed.
Move `sftp_error` into separate file.

This will help when we come to separate out all the libssh2 exception-wrapper functions which depends on `ssh_error` and `sftp_error` but must depend on nothing else.  If `sftp_error` were still in `sftp.hpp`, these wrappers would include everything in that file.
Suppressed keyboard-interactive auth tests that will (currently) never pass.

These just produce noise for every build.  Yes we do need to find a way to test kb-int auth but, as that is not likely to happen soon, it's not doing any good to be reminded of this on every build.
Moved libssh2 SFTP exception-wrapper functions into `ssh::detail::libssh2` namespace.

This is the first stage of a refactoring that will eventually have all libssh2 exception wrappers in the `ssh::detail::libssh2` namespace.  This helps us define a boundary for the yet-to-be-implemented thread locking.  Any functions in the `ssh::detail::libssh2` namespace must not perform any locking but the session must be locked before they are called.  This ensure the exception throw definitely correspond to the function called.

Also removed the requirement that the pointers be supplied as `shared_ptr`s.  These functions should be usable however we finally decide to manage the pointers, which may well not be using a `shared_ptr` as they make object lifetime difficult to control.
Moved libssh2 agent exception-wrapper functions into `ssh::detail::libssh2` namespace.
Moved libssh2 session exception-wrapper functions into `ssh::detail::libssh2` namespace.
Moved libssh2 userauth exception-wrapper functions into `ssh::detail::libssh2` namespace.
Documented ssh::detail::libssh2 namespace.
Created exception-wrapper functions for libssh2 knownhost functions.
Throwing `system_error` from sftp code instead of `sftp_error`.

The main reason is to make it easier to give a non-throwing alternative in the future using `error_code`s.  This commit already adds non-throwing alternatives to the `ssh::detail::libssh2::sftp` namespace.  The rest will follow in due course.

The Boost.System hierarchy is precisely suited to translating library-specific errors to portable abstractions.  This commit already supports that for certain `FX_*` values such as `FX_NO_SUCH_FILE` translated to `errc::no_such_file_or_directory`.
Added missing copy commands for ssh project test-fixture files.

The ssh project was depending on the test-common_boost project being built first, which copied the files as well.  But the ssh project should be entirely independent.
Refactored password authentication to use `ssh::detail::libssh2::userauth` namespace.

Moved it to the namespace as we are trying to move all calls to the libssh2 library there.  This also meant changing the error reporting to use the `system_error`s used in that namespace.  Made necessary changes to `ssh_error_category` to distinguish authentication failure from other errors in a portable manner.
Refactored authentication method negotiation to use `ssh::detail::libssh2::userauth` namespace.

Moved it to the namespace as we are trying to move all calls to the libssh2 library there.
Replaced remaining uses of `ssh_error` in public-key authentication.

Replaced it with `boost::system::system_error` as we are doing for all libssh2 API errors.
Replaced remaining uses of `ssh_error` in known-host processing.

Replaced it with `boost::system::system_error` as we are doing for all libssh2 API errors.  At the same time we added non-throwing alternatives to the `ssh::detail::libssh2::knownhost` namespace.
Cleaned up use of `ssh::detail::libssh2::agent::get_identities`.

Eliminates warnings about conversion to bool.