Ensure SSH library classes move correctly.

Includes new unit-tests to exercise this properly.
Make SSH classes non-copyable to better reflect their underlying concepts.

SSH sessions, for instance, are not inherently copyable so making the class that represents the copyable is somewhat misleading.  The most important flaw was that a session is not shut down until all _copies_ of the object are destroyed, making it very hard to guarantee a session has been disconnected.

This change fixes that by making the objects non-copyable to their underlying session/channel/handle is destroyed at the same time as the representing object.
Make internal state classes non-movable to enforce public class references remaining valid across moves.

Each internal state object is owned by a movable public class.  The public class can create other object by passing them non-owning references to the internal state object so, if those object are to remain valid after their creator is moved, the state must remain in the same place.  Holding the state in an `auto_ptr` and making the state non-copyable, non-movable enforces that.
Remove unused (and unwanted) `raw_attributes` method.
Testing swapping sessions after connecting filesystem.
Decoupled session pooling from CProvider.

This is part of getting better control over the session's lifetime, which we need to do to be sure a session is disconnected (see #85).