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.
Initial base class for devices, whether they be Client or Server.