- Extracted an ISsdpSearch interface.
- Changed all "StartListening" methods to take a list of IPAddress since
  the port is not relevant for multicast joins.
- Fixed a bug where a timeout token might get added to an announcer while
  it is shutting down.
- Added a new method to SsdpSearch to find the first matching SsdpMessage
Added IsListening property to SsdpListener.
Added new Test for ISsdpClient.FindFirst();
- Updated UpnpServer to use ISsdpServer interface instead of the
  implementation class.