datastore: support deferred results. fixes #77.

I thought I'd take a stab at #77. If a response from a `dataset.get` comes back with deferred keys, this will recursively call .get again, only executing the callback passed to the initial .get once, after having gathered all possible results.
> Sounds to me like we want to keep the behavior of this PR, @rakyll?

Yes, it sounds like the whole point of having deferred keys in the response is to allow this behaviour :)

``` js
found = (found || []).concat(entities);
```

Could you add a TODO so we may return the entities in the right order sometime we have time?