Repackage discovery registry so that it can be converted to JSON.

The registry uses a non-string type as keys which is not possible in JSON.
Set content type on discovery rest request.
Provide a data-list of locally discovered nodes when adding a new node.
Make cacheEntry public so that it can be marshalled to the UI.
Cleanup UPnP API

This commit addresses most of the issues identified in #432:

* Support UPnP IGDs with both WANIPConnection and WANPPPConnection services

  IGDs that offer both WANIPConnection and WANPPPConnection services should
  now have port forwarding correctly configured for all services.

* Support multiple UPnP WANDevice and WANConnection descriptions

  Per Figure 1 of the InternetGatewayDevice specification
  (http://upnp.org/specs/gw/UPnP-gw-InternetGatewayDevice-v1-Device.pdf),
  an IGD may have multiple WAN devices, each with multiple WANConnection
  services

* Support for discovery of UPnP InternetGatewayDevice version 2 devices

* Support for discovery of multiple UPnP IGDs

  Consumers that cannot yet properly process multiple IGDs can simply use
  the first IGD listed in the discovery results

* Logging refinements such as friendly UPnP IGD identifiers in log messages.
Add cqcallaw
Merge pull request #775 from cqcallaw/master

UPnP cleanup and fixes for #432
Add pluby
Merge pull request #848 from pluby/discovery

Simpler entry of locally discovered nodes
Asset rebuild
FileInfoTruncated.String() for stindex' benefit
Add a few more debug prints
Handle .stfolder completely in integration test
Remove out of date upnp tests
Fix debug and fmt poopoo
Implement BlockMap
Populate BlockMap
Implement block fetcher (fixes #781, fixes #3)
Fix tests
Track total block counts, count copier blocks

Will eventually allow us to track progress per file