Implements group_by, projection and offset on datastore Query.
Using native proto operations in Query to avoid data out-of-sync.

This applies to both projection() and order_by() getters using
data from the proto and using pb API method ClearFields in
the setters rather than mucking with pb internals.

Also adds a test for multiple calls to projection/group_by
settings to make sure data is cleared.
Merge pull request #282 from dhermes/implement-groupby-projection-offset

Implements group_by, projection and offset on datastore Query.
Refactoring duplicate code between storage.key and storage.bucket.