support SSDP server and client simultaneously, minor generalizations, jslint...

1. be proud node.js ... don't pretend to be a microsoft UPnP browser

2. allow caller to set logging functions for errors, warnings, notices,
and informative entries

3. allow caller to set resource path for UPnP description file.

4. keep track as to whether we are already listening on *:1900, if so,
don't do so again.

5. setting the multicastTTL does more harm than good in terms of
traffic management

6. log the first response from an IP address. (otherwise, we log the
same information every refresh cycle).

7. let the caller decide where to listen (hint: if you want to be a
server and you're not listening on port 1900, you're doing it wrong).