Generate menu items from list of commands.
Test menu merging updates QCMINFO ID.

Otherwise subsequent merging may add menu items with the same IDs as our.  That would be bad.
Merge branch 'feature/menu_generate_from_commands' into develop
Fixed Launch Agent menu command state.

Unlike the Launch Agent command in the rest of the Explorer window, the Launch Agent command in Explorer Tools menu wasn't being disabled if the agent was already running.

This change fixes that problem.  The cause was that 'hidden' and 'disabled' were not mutually-exclusive and the LaunchAgent command set one but not the other.  The menu code then checked the *other* state.  This change makes the two states mutually exclusive to prevent that situation.
Split connection pool code into separate project.

PIDL to connection conversion code remains in remote_folder project.
Encapsulated session pool.

The CPool class was an implementation detail and shouldn't have formed part of the interface of the connection library.
Introduce connection specification object.

Separates the specification of a connection from the running connections (aka sessions).
Allow connection specifications to reveal the session status.
Use connection specification directly as key in session pool.
Made pool initialisation thread safe.
Use Boost.Thread instead of Comet threading.

This allows us to use more advanced locking scenarios in the future.
Removed connection_spec getters which exposed members.

Better OO design achieved by passing session factory into pool rather than the details needed to do the creating inside the pool.
Added method to remove sessions from the pool.
Separation code that specifies connections from code that pools the running sessions.
Added command to close running sessions.

The command removes the session from the pool.  However, any existing reference to the session will not be affected so running tasks will continue and the session will only be closed once they are complete.

We should provide a way for the user to truly log out and kill even those sessions that are in use.  This also relates to a bug where the session is in the pool but has not been authenticated (probably because authentication failed).  At the moment, these sessions appear to the user to be connected.

Addresses #85.
Fix connection_spec to give strictly weak ordering.

Needed to work with STL.  I'd messed up the comparison implementation.  Now we're using tuples of the members and delegating the comparison to them.
Show icon over connections with a session in the pool.

Currently using the 'default' icon which is a tick.

Relates #85.
Moved HostFolder icon extraction to a separate class.
Moved host-item-to-connection conversion code to separate unit.
Updated to latest winapi library revision.