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.
Search will be broken until the search map is updated.  In fact this should probably be moved to the SongManager.