GUAC-963: Maintain connected clients in the background

This change allows multiple connections to coexist within the same tab. Active connections appear within the "Recent Connections" list as real-time thumbnail images. Choosing a connection will preferentially open the existing active connection, creating a new connection only if no active connection exists for that ID.

These changes also remove the file transfer notifications, though file transfer support is still present and implemented. This will be restored before end of GUAC-963.

The general changes are:

1. Cleanup of the guac menu for sake of easy navigation / disconnecting.
2. Addition of a "back" button to both the guac menu and any error dialogs.
3. Implementation of the ```ManagedClient``` and related classes, allowing Guacamole clients to exist without being attached to a view.
4. Modification of the ```guacClient``` directive to use a ```ManagedClient``` instance, rather than a connection ID.

Caveats:

1. File transfer is temporarily invisible, so you can't see progress as files are uploaded. Files do upload successfully, however.
2. File transfer is temporarily invisible, so you can't access files you've downloaded. They sit just out of reach in memory, taunting you.

All this ultimately resolves the original bug of GUAC-963 (status dialogs and clients still active despite navigation), but does so in a really nifty way.
Ish, yes. I feel that ```safeApply()``` is a thing that should never be used. Either ```$apply()``` is a bug in itself, or we just need to be diligent in its use. In the case that a function can be called synchronously and there's no avoiding it, ```$evalAsync()``` is the way.

That or ```$timeout()```...

Obviously, we can't just plaster ```$evalAsync()``` everywhere. Stuff needs to be purposeful.