Refactor ElasticIO.Result out into DiscoveryResult

Move inner class Result out of ElasticIO so that it can be reused by
other backends.

The idea is to be able to have the discovery backend talk to anything
that queries it using DiscoveryResult objects. This will allow
seamlessly switching out discovery backends with the same query
intefaces (ex- http)