Refactor EventManager

Watching a file descriptor is now done using a FDWatcher object
Add and use a Set template class for recuring small sets
RemoteClient owns the FDWatcher of it's socket
move input watching responsibility into UserInterface implementations