Removed unused `session_from_pidl` function.
Stop lazy session creation inside consumer.

The proper way to do it is to lazily-create the provider, not lazily create the session inside the provider.  That just overcomplicates the provider's implementation.
Revive dead sessions properly.

We lost this once we started fetching sessions from the pool inside the provider.  That meant we should have been clearing them from the pool if they died.  This wasn't necessary when we were storing providers in the pool because they handled it internally.
Simplify ProviderFixture.

The architecture has changed so it's no longer important whether providers are mortal or immortal.  Splitting into two files helps prevent VS2005 compiler crashing as we can hide some complexity in the CPP file, which limits its spread.
Removed responsibility for connecting from CProvider.

Now this is done outside and an already-connected session is passed to it.  Also means most of the methods don't need a consumer any more because they only used it for connecting.
Reduced some of the unnecessary passing around of consumers.

They key was removing it from the `CSftpDirectory` constructor.  They are only used for renaming and authenticating sessions now.
Give `session_pool` complete control over the session lifetimes.

Instead of being stored and retrieved using `shared_ptr<session_pool>`, they are now stored non-copyably.  This means when they are removed from the pool the are immediately disconnected.

Part of out effort to allow the user to force-disconnect a connection. See #85.
Pass provider to non-owning code as a reference.
Update to official version of Boost.Locale.

Until now we have been using the CPPCMS version of Boost.Locale (v2.92) from before is was officially accepted into Boost.  This commit updates the code to use the official version and removes the project needed to compile the other version of Boost.Locale.
Updated to latest version of winapi library.
Remove unused include.
Make all uses of a session reserve a ticket first.

In 45982a892ddc5aea23cc7b26a00b4937c3a8a3b8 the `session_pool` started handing out non-copyable `authenticated_session`s references, instead of `shared_ptr<authenticated_session>`s, so that it can guarantee a session would be disconnected when `remove_session` is called.  As a result, when the user clicks 'Close session', any remaining uses of that session would crash Explorer.

This commit reworks the session management so that all session uses register their interest in the session by reserving it and receiving a ticket for that reservation.  As long as they hold the ticket, they may use the session without fear that it will be disconnected.  The allow this, the 'Close session' command is changed to wait for all outstanding tickets to be released before disconnecting the session.

A part of the implementation would benefit from future work, but will do for now: While the disconnection is occurring, the progress dialog it displays blocks the window, which prevents the user cancelling the tasks holding tickets by making their UI unresponsive.  See #260.

Closes #85