Copy to drop target asynchronously.

This prevents the windows blocking while the copy occurs.  Some more changes are needed before this feature is ready:
- Fix mutex problem when getting a file stream so that multiple streams can't be accessed simultaneously.
- Remove code that uses the OLE site as this is incompatible with an asynchronous drop
- Sort out progress dialogue on synchronous drops, as it is not appearing currently.

Addresses #59.
See #182.
Merge branch 'master' into feature/async_drop_target
Stop using OLE site as parent for UI in drop target.

The OLE site goes away after returning from Drop but our asynchronous drop operation is still going.  Instead we use the window the drop target was given when it was created.

See #59.
Decoupled announcing exception from rethrowing it.
Fix provider thread safety.

Moved the locks close to the libssh2 calls and maintain the mutex in the session object.

This fixes the problem of streams not being thread safe and reduces the time the methods are locked.

Closes #59.