Simpler entry of locally discovered nodes

This involved 3 commits, but each is dependent on the one before so I thought it worth combining them into a single pull request.

Worth mentioning a change to "discovery.All()" function. A grep showed it was only used by the rest API, which always failed because the return value could not be converted to JSON. It emitted some types exclusively made up of private members (cacheEntry). I thought there was more downside in exposing the internally used bytes compared with re-packinging the data as strings, which would have resulted in a second stage of convertion in the web API function anyway.

Use of a datalist in the GUI was chosen as it doesn't alter the design of the interface, although there is no support for a datalist in Windows Mobile or Safari, so this might need improving at some point, nevertheless I hope it's worth including as it stands for now.

PS: This is my first commit pull request on github ever.
The problem here is that, as far as I can tell, only map[string] can be converted to JSON. Implementing the marshaller interface on DeviceID wont help because the key must be a string in order to be a valid JSON field name (it would be OK if it were a value). Any other suggestions? I was thinking that as the rest API currently doesn't work, and all we really need is the node id, I could just use the All() result to construct and emit a JSON array of node ids in the rest API. Does that sound preferable?