ConnectionManager and Associated Connections
Created by: osbornjd
I'm going to introduce this PR now since I think it would be useful to review the code associated with connections and get comments on it as a "first step" towards filling out the rest of the remote commands.
This PR introduces some code that manages remote connections. There are three main classes, ConnectionConfiguration, Connection, and ConnectionManager which is a static factory. ConnectionManager is responsible for opening, closing, and in general managing the various remote connections that one might open. ConnectionConfiguration and Connection are the two classes which contain all of the relevant information necessary for establishing/holding/closing a remote ssh connection.
At the moment, the test for ConnectionManager just tests the ability to successfully open and close an ssh connection with a private (to me) ssh connection. I am planning on making this more general so that tests can be run by anyone without giving away personal ssh credentials.