Decoupling the UI logic from the media/core functionality

This code isn't complete, in fact it doesn't even compile yet, but it is the beginning of decoupling the UI logic from the base functionality.  In this implementation the Server class will contain a SongManager, ClientManager and various UI classes.  All of this functionality already exists in the Host class in the root directory.  This commit is merely the beginning of decoupling all of that functionality.
Not complete yet.  It manages the songs a device knows about and writes the results to disk/reads from disk.