Refactor for simplicity and thread safety

Libssh2 requires that we don't share structures and handles between
threads, something that we have not paid much attention to so far. This
is however something that is likely to introduce issues and we should
work to solve them now.

We add a mutex to SftpSession which can be used by locks in order to
guard Libssh2 functions from being used from multiple concurrent
threads. In order to do this more efficiently we want to move all
Libssh2 use to SftpSession. We therefore remove the download and
transfer classes for now. That functionality is likely to be added back
into SftpSession in a thread-safe way in the future.

During this refactoring we make some of the methods somewhat simplified.
For example we cut down on our excessive use of std::shared_ptr since we
didn't really use that functionality throughout.

Signed-off-by: Marcus Karlsson <mk@acc.umu.se>